本文由 张渊杰 (网名寂静)编写

Swift语言 1小时速学教程

写在前面的话

有些人可能想, 呵呵, 1小时学一门语言, 你不是搞笑吧, 我想说, 是的, 完全可以, 就要看你怎么学了

要想在1小时内学会swift, 你要有一个前提和一个目标, 前提就是你已经熟练掌握了任何一门面向对象的语言, 并且用它来开发过项目, 而树立的目标不是完全掌握这门语言, 而是学会基本的使用, 并且使用它写一个小项目, 这才是这个教程的终极目的.

学习其实是体验, 学习其实是思考, 学习其实是验证, 学习终归需要实践, 总归要解决现实中的问题, 好了, 让我们开始吧

注意: 本教程适用于 已经掌握了C++,Objective-C, PHP等面向对象编程语言并使用这些语言编写过项目的人

概览

  • 基本输出
  • 变量和常量
  • 运算符和表达式
  • 选择语句
  • 循环语句
  • 数组
  • 字典
  • 函数
  • 字符串
  • 结构体
  • 枚举
  • 类的定义
  • 类的初始化
  • 类方法
  • 类的继承
  • 类的扩展
  • 类的协议 - 实现一个代理

1. hello world

实例1: 输出hello world

让我们来写一个最简单的swift程序吧!

//使用print函数输出hello world
print("hello world")

说明:

使用//和/**/注释语句, 语句后面的";"加上可以, 不加也可以

2. 变量定义

实例1: 计算圆的面积

使用var可以定义变量, 使用print可以输出

//使用var定义变量, 变量类型会使用自动推导, 如果没有初始化, 必须指定类型
var a = 10
var b = 20
var c = a+b //字符串中的\(c)表示输出的时候替换为c的值
print("a = \(c)")

实例2: 变量类型和转化

//4种常用类型
var n1:Int
n1=10;
var n2:Double = 10.23;
var n3:Character = "A";
var n4:String = "AB" //类型转换
var v5 = 10.2
var v6 = 3
//直接写, 有语法错误
//var v7 = v5 + v6 //swift是类型安全的语言, 整数和小数不能直接计算, 需要转化为同一种类型
var v7 = v5 + Double(v6)
print("v7 = \(v7)")

3. 运算符和表达式

实例1: 计算圆的面积

let pi = 3.14159
var r = 10
var area = Double(r) * Double(r) * pi
print("area = \(area)")

说明: swift是类型安全的语言, 整数和小数不能直接计算, 需要转化为同一种类型

4. 选择语句

实例1: 判断成绩是否及格

//定义成绩
var score = 67 //swift中选择与OC十分相似
if(score>=60)
{
print("及格")
}
else
{
print("失败")
}

5. 循环语句

实例1: 计算1-100的和

var sum = 0

//swift的循环使用for实现, 与oc相似, 但是循环变量使用var定义
for(var i=1; i<=100; i++)
{
sum += i
}
print("sum = \(sum)")

6. 数组

实例1: 存储5个人的年龄, 计算平均值


// 使用 [] 定义数组
var ages = [23,24,12,43,32] //使用ages[0]形式获取数据
print("第一个人年龄 \(ages[0])") //使用count属性获取数组个数
print("数组元素个数 \(ages.count)") var sum = 0.0
for(var i=0; i<ages.count; i++)
{
sum += Double(ages[i])
}
var average = sum / Double(ages.count)
print("avg = \(average)")

7. 字典

实例1: 存储5个人的年龄, 计算平均值


//使用[]定义字典
var dict = ["sid":"0805",
"name":"zhangsan",
"score":89]
var name = dict["name"] //获取出的可能是nil, 建议做判断
if(name != nil)
{
//name!语法表示name可能为nil, 可能是数据, 取到真实的数据
print("name = \(name!)")
} //遍历的语法
for (key,value) in dict
{
print("\(key) -> \(value)")
}

8. 函数

实例1: 定义一个基本函数(没有参数和返回值)

//定义一个基本函数
func basic()
{
print("hello")
} //执行这个函数
basic()

实例2: 带参数和返回值方法

//swift是类型安全语言, 参数需要指明类型
func sum(let x:Int,let y:Int) -> Int
{
return x+y;
} //执行函数
var n = sum(10, y: 10)
print("n = \(n)")

9. 字符串

实例1: 定义字符串, 输出

//定义字符串并输出使用
var s = "hello" //输出字符串
print("s = \(s)") //统计字符个数
print("s = \(s.characters.count)")

实例2: 字符串合并

//合并
var s1 = "hello "
var s2 = "world" //可以直接使用 + 合并两个字符串
var s3 = s1 + s2
print("s3 = \(s3)")

实例3: 获取子串

var s4 = "day day up"
var subString = s4.substringFromIndex(s.startIndex.advancedBy(4))
print("s4 = \(subString)")

10. 结构体

实例1: 定义一个结构体, 定义变量, 使用属性

//定义一个结构体, 注意, 其中数据如果不指定类型, 需要初始化
struct Person
{
var name = ""
var age = 0
} //创建结构体对应变量
var zhsan = Person() //使用结构体的属性
zhsan.name = "zhangsna"
zhsan.age = 10

11. 枚举

实例1: 定义一个枚举, 使用这个枚举

//定义一个枚举, 其中的值使用case定义
enum Week
{
case 周一
case 周二
case 周三
case 周四
case 周五
case 周六
case 周日
} //获取和使用枚举的值
print("1-> \(Week.周一)")

12. 类的定义和使用

实例1: 定义一个类, 创建对象, 使用属性和方法

//使用class定义类
class Dog {
var nickname = ""
var age = 0 //使用func定义方法
func show()
{
//方法中使用self引用对象本身
//print("name = \(self.nickname), age = \(self.age)") print("name = \(nickname), age = \(age)")
}
} // 使用" 类() "格式创建对象
var dog = Dog() //使用对象的属性
dog.nickname = "ahua"
dog.age = 4 //使用对象的方法
dog.show()

13.类的初始化

实例1: 添加两个初始化方法, 并利用这两个方法初始化类

class Car
{
var type = ""
var speed = 0.0 //定义默认的初始化类
init()
{ } //定义带参数的初始化类
init(let type:String,let speed:Double)
{
self.type = type
self.speed = speed
}
} //创建的同时初始化
var car = Car(type:"mini",speed: 100)
print("name = \(car.type)")

14. 类的类方法

实例1: 定义和使用类方法

class Math
{
static func add(let x:Int, let y:Int) -> Int
{
return x+y;
}
} var num = Math.add(10, y: 20)
print("n = \(num)")

15. 类的继承

实例1: 定义类, 继承一个类


//定义的父类
class Car
{
var type = ""
var speed = 0.0 //定义默认的初始化类
init()
{ } //定义带参数的初始化类
init(let type:String,let speed:Double)
{
self.type = type
self.speed = speed
}
} //定义子类FlyCar, 继承父类
class FlyCar : Car
{
var flySpeed = 0.0
func fly()
{
print("fly with \(flySpeed)")
}
} //创建对象使用
var fc = FlyCar()
fc.fly()

16. 类的扩展

实例1: 定义扩展, 并且使用这个扩展


extension Car
{
//扩展不能包括属性
//var loadLimit = 0
func load()
{
print("Load people")
}
} var newCar = Car()
newCar.load()

17. 协议

实例1: 定义和使用协议


//使用protocol定义一个协议
protocol TextFieldDelegate
{
func didFinish()
} //TextField利用协议规定delegate对应的类实现方法
class TextField
{
var text = ""
//?表示delegate未设置的时候为nil
var delegate:TextFieldDelegate? func handClick()
{
//检测是否设置代理, 如果设置, 执行代理中协议规定的方法
if(delegate != nil)
{
delegate?.didFinish()
}
}
} //ViewController遵守和使用协议
class ViewController : TextFieldDelegate
{
func viewDidLoad()
{
//警告
// ariable was never mutated consider changing to let constant
let textField = TextField()
textField.delegate = self
textField.handClick()
} //实现的协议方法
func didFinish() {
print("编辑完成")
}
}

有疑问有建议,如何联系我?

如果对本教程有疑问或有其他意见, 请联系 张渊杰(注于移动开发和移动培训领域, QQ598694550,邮箱quietjolt@163.com)

Swift语言 1小时速学教程的更多相关文章

  1. Swift语言Storyboard教程:第一部分

    更新记录: 该Storyboard教程由Caroline Begbie更新iOS 8和Swift相关内容.原文作者为教程编纂组的成员Matthijs Hollemans. 2014/12/10更新:  ...

  2. Swift语言Auto Layout入门教程:上篇

    原文:Beginning Auto Layout Tutorial in Swift: Part 1/2,译者:@TurtleFromMars 开始用自动布局约束的方式思考吧! 更新记录:该教程由Br ...

  3. 学习swift语言的快速入门教程推荐

    随着苹果产品越来越火爆,苹果新推出的swift必定将在很大程度上代替oc语言.学好swift语言,对于IOS工程师来讲,已经是一门必备技能. 有一些比较好的英文版教程,值得学习. 1. Swift T ...

  4. swift语言注册非免费苹果账号iOS游戏框架Sprite Kit基础教程

    swift语言注册非免费苹果账号iOS游戏框架Sprite Kit基础教程 1.2.3  注册非免费苹果账号swift语言注册非免费苹果账号iOS游戏框架Sprite Kit基础教程 免费的苹果账号在 ...

  5. Swift语言中如何使用JSON数据教程

    这是一篇翻译文章,原文出处:http://www.raywenderlich.com/82706/working-with-json-in-swift-tutorial Swift语言中如何使用JSO ...

  6. 苹果Swift语言中文教程资源汇总

    苹果swift语言中文教程(零)搭配环境以及代码执行成功http://vjiazhi.com/kaifa/1014.html 苹果Swift语言中文教程(一)基础数据类型 http://vjiazhi ...

  7. Swift语言教程中文文档

    Swift语言教程中文文档 Swift语言教程(一)基础数据类型 Swift语言教程(二)基础数据类型 Swift语言教程(三)集合类型 Swift语言教程(四) 集合类型 Swift语言教程(五)控 ...

  8. 快看Sample代码,速学Swift语言(1)-语法速览

    Swift是苹果推出的一个比较新的语言,它除了借鉴语言如C#.Java等内容外,好像还采用了很多JavaScript脚本里面的一些脚本语法,用起来感觉非常棒,作为一个使用C#多年的技术控,对这种比较超 ...

  9. 快看Sample代码,速学Swift语言(2)-基础介绍 快看Sample代码,速学Swift语言(1)-语法速览

    快看Sample代码,速学Swift语言(2)-基础介绍 Swift语言是一个新的编程语言,用于iOS, macOS, watchOS, 和 tvOS的开发,不过Swift很多部分内容,我们可以从C或 ...

随机推荐

  1. 将list转换为json失败

    估计你是用的hibernate的自动注解,并且里面有一对多,多对一的关系,这是需要在不需要的字段上加上注解@JsonIgnore, 这样的话在list转json的时候就会忽略加上@JsonIgnore ...

  2. ios 添加到cell 上的button点击无效!扩大button的点击区域(黑魔法)

    一般情况下点击效果都是正常的!要不然你对它做了什么?一般细心的小伙伴都没有遇到这种情况,但是呢! 当然我是二班的!在这里我主要讲两个问题,解决问题和普及魔法. 一.普及问题(button在cell上点 ...

  3. linux-多线程

    一.什么是线程? 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立执行的基本单位.线程自己基本上不拥有系统资源,仅仅拥有一点在执行中不可缺少的资源(如程序计数器,一组寄存器和 ...

  4. js 获取浏览器版本号

    1.在web开发中,会常常让你推断当前使用的是那个浏览器及浏览器的那个版本号,依据浏览器版本号来调整CSS的样式, 使在web界面在各个浏览器展现达到最佳的效果,以下是获取当前浏览器的代码: getB ...

  5. Redis学习手册(Hashes数据类型)

    一.概述: 我们可以将Redis中的Hashes类型看成具有String Key和String Value的map容器.所以该类型非常适合于存储值对象的信息.如Username.Password和Ag ...

  6. 集合(Collection,set,list,map)

    package cn.hncu.col.col; import java.util.ArrayList;import java.util.Collection;import java.util.Has ...

  7. DirectShow初探

    filtergraphmanagernullmicrosoftdirect3d 可能到现在为止,还没有哪个玩过游戏的人没有接触过Microsoft的DirectX的.因为现今大多数的游戏都是用Dire ...

  8. 解决Ubuntu下sublime中不能输入中文的问题

    解决Ubuntu下sublime中不能输入中文的问题 Ubuntu下安装sublime后,不能输入中文,而在其他软件中能正常输入,这是sublime的bug,解决方案是在通过shell在每次运行sub ...

  9. Asp.net上传出现“超过了最大请求长度”的问题解决方法

    在开发ASP.NET网站后台管理系统时,我们可能会遇到这样的问题:上传大于4M的文件时,会提示错误:错误信息如下: 1.异常详细信息:超过了最大请求长度. 2.引发异常的方法:Byte[] GetEn ...

  10. HOOK函数(二)——全局HOOK

    如果钩子函数定义于当前进程相关的线程中,则钩子函数只能处理当前进程的线程的消息,如果要想处理当前正在运行的所有进程的鼠标消息和键盘消息,那么安装钩子函数的代码必须实现在动态链接库中.所以如果想让安装的 ...