最近终于下定决心开始看iOS开发了,不过没有一开始就去看project,还是决定先熟悉下swift先(科班生的习惯了,不大习惯一开始就去接触开发,先学习下基础)
然后就是不打算看oc了,直接上手swift
swift现在是更新到了2.0,苹果改了一些语法,所以有时候其他教程的语法会报错,强烈建议边看边打
先介绍hello world
swift跟PHP和python有点类似,不用头文件之类的,一行
print("hello world")
即可
需要注意的是,在swift1中,输出有两种,print和println,学过java的应该就看得懂
不过在swift2中,println被取消了,print默认就会换行,要想不换行,要加上一个参数
print("我要换行!", terminator: "\n")
terminator的值就是输出后自动加上的字符,改成“”即可
此外,字符串格式化采用\(),例如
var num = 5;
print("the number is \(num)")
哦,还有一个,swift不需要分号; 不过加了也不会报错
除此之外,跟c/java系的语言没什么区别,上手非常快
一,数据类型
1,swift是强类型语言,编译器会自动类型推导,但是不会默认类型转换
也就是说
var str = "hahaha" + 1
是会报错的,请使用
var str = "hahaha" + String(1)
进行强制类型转换
2,虽然不用制定类型,但你也可以指定,例如
var str:String = "string"
通过 : 加数据类型进行指定
3,一些基本的数据类型在此不表,学过c++的人基本可以无缝过渡(除了首字母要大写)
4,swift有变量和常量两种概念,如下
var numb = 1 // 变量,可以更改值
let numc = 2 // 常量,更改值会报错
有基础的话看一眼就懂了
5,类型别名,感觉不是很常用,不过还是加上吧
typealias AudioSample = Int
跟c的typedef差不多,不表
6,bool类型
单独说bool类型是因为swift有点不同
在swift中,只有bool类型可以参与判断
let i = 1
if i {
// this example will not compile, and will report an error
}
这个在c是可以通过编译的,但是swift不行,必须用
let i = 1
if i == 1 {
// this example will compile successfully
}
7,tuple(元组) array(数组) dictionary(字典)
这个跟PHP很类似
我查的资料都说要同一类型,但是自己试的时候发现其实声明时不是一个类型也行
元组和数组的区别就是元组声明后就不可更改了,其他没太大区别,字典则是以键值对的形式存储
//var array = [1, 2, 3.5, "hehe"] // 数组 数组和元组都可以下标访问
//var array = (1, 2, 3, 5, "hehe") //元组 声明的时候都可以不同类型混搭
var array = ["num":1 , 2:"2"] //字典
print(array)
数组可以通过append方法添加元素,也可以直接用+=添加
字典可以直接通过下标添加元素
除了上文那样隐式声明,还可以
var str:[String]() //空数组
var str1:[String] = ["1", "2"] //在已指定类型的情况下,再插入不同类型的值会报错
var str:Array = [1, 2, 3] //不指定类型
var a = Array (count: 2 , repeatedValue: 0 ) // 重复赋值
需要注意的是,[String]是swift2的语法,swift1要写成String[]
虽说swift不强制同一类型,但是建议使用的时候最好事先规定类型,更不容易出bug
除了这三个,苹果官方还给出了一个Set(集合),学过c++的同学应该可以一眼看出怎么用,留给各位自学8,可选类型和选择绑定
这个跟java有点类似(不过我没深入学习java,只是实训的时候用了几天而已,可能不准确,见谅)
swift允许在声明的时候在类型后加上?表示变量可以为 nil (可以理解成null)
let possibleString: String? = "An optional string."
编程人员可以使用if语句来检测一个可选类型是否包含一个特定的值,如果一个可选类型确实包含一个值,在if语句中它将返回true,否则返回false。如果你已经检测确认该值存在,那么可以使用或者输出它,在输出的时候只需要在名称后面加上感叹号(!)即可,意思是告诉编译器:我已经检测好这个值了,可以使用它了。如:
if convertedNumber != nil {
print("\(possibleNumber) has an integer value of \(convertedNumber!)")
} else {
print("\(possibleNumber) could not be converted to an integer")
}
// prints "123 has an integer value of 123"
选择绑定帮助确定一个可选值是不是包含了一个值,如果包含,把该值转化成一个临时常量或者变量。选择绑定可以用在if或while语句中,用来在可选类型外部检查是否有值并提取可能的值
if let actualNumber = Int(possibleNumber) {
print("\(possibleNumber) has an integer value of \(actualNumber)")
} else {
print("\(possibleNumber) could not be converted to an integer")
}
// prints "123 has an integer value of 123"
二,运算符
这个是最没东西可讲的,因为全世界的基础语法都一样,一窍通,窍窍通
在此只说几个不同的地方
1,元组的应用
元组的存在,使swift可以在函数中返回多个变量,扯远了
元组的赋值如下
let (x, y) = (1, 2)
// x等于1, 并且y等于2
10%3.3 == 0.1
各位自行感受
3,swift允许 “-” 作为一元操作符
let three = 3
let minusThree = -three // minusThree equals -3
let plusThree = -minusThree // plusThree equals 3, or "minus minus three"
4,范围运算符
这是swift的特色
直接看代码
for index in 1...5 {
println("\(index) times 5 is \(index * 5)")
}
// 1 times 5 is 5
// 2 times 5 is 10
// 3 times 5 is 15
// 4 times 5 is 20
// 5 times 5 is 25
“...”代表闭区间
"..<"代表左闭右开区间,注意,在swift1中,是".."
看,只有那么几点,简直2分钟上手该小节
第一天先到这里,打打代码压压惊