前言
笔者仅是初窥iOS开发的小萌新,之前就学过一丢丢的java和c,iOS开发的知识都是自学,希望运用费曼学习法,把每日所学整理出来,仅作为个人的学习笔记,可能有很多错误希望大佬们指正。
变量与常量
这里变量和常量与java,c相差不大,变量用var(Variable)定义,常量用let定义。
类型
数据类型
类型int,float,double这些都和c相似,就不赘述了。
在swfit中定义变量的时候必须要赋值,因为当你定义变量时,swift会自动的猜测这个变量的数据类型,如果你给他赋值 1 ,则就会认定这个变量是整型,如果赋值 1.0 ,此时有小数点的存在会认为是浮点类型。
而有的时候你定义了一个变量,也不知道他要输出什么类型的,没法在定义的时候给他赋值,比如说你定义一个变量,用来存放计算后得出的结果,这个结构有可能是整形,也有可能是浮点类型,这个时候你可以在定义这个变量时定义为 “nil”
//可选整数,允许为nil
var x : Int? = nil
x = 42
这里的?指x的值可以是int类型
有的时候还会碰到 ! 符号,表示的是拆包(unwrap)操作,对于用了 ? 的可选类型,必须要拆包才能获取数据
//可选类型必须拆包
x = 2
1 + x! //结果为3,这里对x进行了拆包,得到了x的值进行计算
x = nil
1 + x! //此时会报错,不能用nil数据操作
//如果不想每次都拆包,可以在定义时就声明成已拆包的
var x : Int!
x = 1
1 + x //但是这样会不安全,有时候你可能会忘记里面是nil
上面主要阐述了 ! 与 ?的用法,因为swift在定义变量的时候必须确定它的数据类型,所以 ?是在你不知道什么类型数据的时候使用,它有可能是整型也可能是浮点数,甚至可能是nil,即没有值的状态。
而当你需要用这个变量运算的时候,就得在后面跟个!执行拆包操作,读取他的值,当然你也可以偷懒,在定义的时候就进行了拆包,但这样是有风险的,因为nil这个数据不可用,不能拆包,所以不建议这样用。
在swift中还能在不同类型中转换,常用的有int和string之间的
let aString = String(anIntegar)
let aString = anInteger//错误,不能直接在类型间转换
元组
简单的数据集合,可以把多个值绑定在单个值中
let aTuple = (1,"Yes")
let theNumber = aTuple.0 // =1,aTuple中的第0个元素
let anotherTuple = (aNumber: 1,aString: "Yes")
let theOtherNumber = anotherTuple.aNumber // =1
关于这个我能想到的应用场景是,在计算移动距离时,你手上有组二维坐标,像是经纬度一样,这样就能把单独的经度和纬度存入一个名叫坐标的元组中,更加方便计算。但是这也仅是我设想的,学习时间还少,还没经过实践,仅供参考,欢迎指正
数组
这对有c基础和java基础的就很好理解了,不过多赘述,值得注意的是,在swift中,用let定义的数组,内容是不可变的。
var myArray = [1,2,3]
myArray.append(4)//=[1,2,3,4];append函数用来往数组的末尾追加对象
myArray.insert(5, atIndex: 0)//=[5,1,2,3,4];insert可以在任意位置插入对象
myArray.removeAtIndex(4)//=[5,1,2,3];从0开始数起,0,1,2,3,4,这里4恰好是第五个数字
myArray.reserse()//=[3,2,1,5];用来颠倒这个数组的内容
myArray.count//=4 可以得出数组中元素的个数
字典
如其名,创建一个一个字典,里面有各类数据,查询的时候可以通过下标访问内容
var crew = [
"Caption": "xiaoming",
"First Officer": "xiaohe"
"Second Officer": "xiaogang"
];
crew["Captain"]//="xiaoming"
crew["Third Officer"] = "xiaomei"//这个时候将小美存入字典crew,作为第三个职员
当然字典内的数据可以不只是string类型的,也可以说整形,也可以是混合的。
字典让我联想到了java中的类,而里面的内容就有点像类的属性一样。当然这样的形容很不贴切,但我想说的是,字典和里面的内容应该是有一定关系的。就像这个例子中的crew(船)与他的1,2,3Officer一样。
参考自《Swift开发与Cocoa框架开发》Jonathon Manning,(澳)Paris Buttfield-Addison and Tim Nugent所著,贾洪峰译