Swift语言 1小时速学教程

时间:2022-04-24 15:51:51

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

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)