Swift One Day
今天学了 swift,第一次写 swift真心不习惯.. 索性把知识点都总结一下,方便以后的阅读
正题开始:
swift中是没有 main函数的慨念,不像OC中 main函数为程序入口;
swift所创建的文件后缀为 .swift OC中文件后缀为 .m .h
swift中可以不写分号,但是在一行中有多条语句的时候必须要写
swift中采用的 pringt函数进行打印,代替了OC中得 NSLog语句。在print函数中没有占位符:@d 等等的概念,如果想要插入参数 采用的是 \( )
在 swift中 变量和常量的表示为 var / let。所有类型都依据这两个来创建
在 swift中不存在隐式转换,不同的数据类型不能做运算,在做运算之前必须强制类型转换。列如:let a1:Int = 11 // 整形 let a2:Double = 10.01 //浮点型 ** 在运算两个的时候 就要注意强制转换类型: let sum = a1 +Int(a2)
在 swift中BOOL只有两个值: true / false
在 swift中字符类型用 character表示 比如: let a:Character = "x"
在 swift中字符串类型不是一个对象,而是一个结构体
在 swift中获取字符串的长度 首先要得到 characters属性 比如:var str1 = "string" print ("长度 ====\(str1.characters.count)" ) 拼接字符串采用的是 += 符号,如果拼接的是一个字符采用的是 append函数 比如:var str2 = "xxx" str1 += str2 print (str1) 打印出来的就是 stringxxx ; 拼接字符: let char:Chararcter = "o" str1.append(char) print(str1) 打印出来的就是 stringo
如果要判断两个字符串是否相同,OC中是 iseq语句 swift中直接用 == 来判断 。 判断前缀是否相等 .hasPrefix( ) 判断后缀是否相等 .hasSuffix( ) 。 大小写的转化分别用 .uppercaseString / .lowercaseString
字符串也是支持遍历的 在 for-in中 不用明确指出类型
/*数组*/ swift中判断数组是可变还是不可变 ,是通过 let / var 来区分。创建数组必须明确的指出数组里面元素的类型 比如: var arr:[String] = ["哈哈","嘻嘻","呵呵"] 。 增加元素采用 .append 比如:arr.append("嘻嘻") 。 删除元素采用 .remove 其中 .removeAll(keepCapacity: Bool ) 和 .removeAll( ) 是不一样的 虽然都是移除所有元素,但是前者保留了数组内存,后者删除了内存。 遍历数组分为两种: 普通遍历和元组遍历 for item in arr1 { print(item) } for (index,value) in arr1.enumerate( ) { print("index = \(index),value = \(value)") }
/*字典*/ swift中字典的创建跟数组大同小异,字典的类型是 Dictionary。创建一个字典必须明确的指出元素的类型 比如:var dic:[String:AnyObject] = ["name":"xx","gender":"gg"] 增加和更新可以算一起,如果key值存在就是一个更新操作,不存在就是一个添加操作 删除操作通过 .remove进行,字典也同样支持遍历。与数组不同的是,字典的元组遍历是采用了 (key,value) 比如:for (key,value) in dic1.enumerate( ) { print("key = \(key),value =\(value)") } 字典可以合并,通过遍历合并。 获取所有的key值是 通过 .keys
/*可选类型*/ 是 swift特有的一个类型。如果一个值可能为 nil,也可能有值。那么这个变量/常量就是一个可选类型,用 ?当做标识。如果打印出来有 Optional字样,说明打印的是一个可选类型,可选类型不能直接参与运算,在参与之前必须强制解包,用 !。并且在进行强制解包之前必须确定这个可选值不为 nil。在 model中基本数据类型如果为可选类型,必须给其一个默认值
/*枚举*/ 如果枚举关联的一个整形数据的话,后面的枚举值会根据前面的赋值累加。 比如: enum Month:Int { case Janauary = 1,February,Match } 后面分别为 1,2,3 如果枚举关联的基本数据类型中非整形数据的话,必须给出所有的枚举关联值,即每一个都给定值。如果一个枚举类型已经制定,下次赋值的时候可以通过 . 的方式进行再次赋值,会省略前面的类型
/*空运算标识符*/ 空运算标识符 ?? 如果可选类型值不为空,会帮我们进行强制解包然后参与运算中,如果为nil 则提供一个默认值参与运算
/*循环*/ 在swift中没有 do-while循环,取代的是 repeat-while