swift入门语法&&基础教程
Swift基础 1,常量和变量 变量 可以修改的 常量 定以后不可以修改 提示:在swift开发中,通常先定义常量,只有必须要修改的时候,再改成var,因为let本身不允许被修改,因此更安全 var x =10 x =15 let y =10 //y = 15 报错 //[[UIView alloc] initWithXXX:xxx] //所有OC中以上的实例化方法,在swift中都可以使用类名(XXX:) //实例化一个View对象,保存在堆中 let view = UIView(frame: CGRectMake(0,100,100)) //[UIcolor redColor]在swift中,通常用类名.方法名可以找到对应函数 view.backgroundColor = UIColor.redColor() 注意事项:swift时一个对类型是一个对类型要求很严格的语言 任何类型之间,都不可以进行隐式转换 整数的格式 Int(long64位的) 小数的格式 Double (OC默认小数的格式是 CGFloat) 关于数据类型的推导,在给变量设置初始值的时候,根据"右边"来判断的,在真正初始化的时候,才决定变量的准确类型 let i =10 let j =10.5 下面两种都可以实现i和j的相加 let k1 = Double(i) + j//把前面转成小数 let k2 = i + Int(j)//把后面转成整数 //在定义变量的时候也可以直接指定变量的类型 let z:Double =8 2,分支逻辑 /** * if 在C语言中有一个提点:非零即真 在swift中没有非零即真的概念,只有true/false 在编写分支语句的时候,必须准确指定条件的真假 */ let m =10 /** * 1.条件不需要括号 2.必须要有{} 使用swift开发,要写出优雅的代码,非常有挑战 */ if m >5{ print("hello") } 实际应用 convernience init?()表示这个方法未必能真正实例化出一个对象 在OC开发中,由于语法要求不严格,程序员不需要考虑这些问题,在崩溃的时候才考虑 在swift中,要求在写代码的时候,就必须考虑这些问题,能够尽早些发现错误 let url = NSURL(string: "http://www.baidu.com/s?word=zhongguo")//string中有中文的时候 url为空 if url !=nil { //NSURLRequest(URL: url)中,url必须要有值 let request = NSURLRequest(URL: url!) } 但是,如果判断条件很多,会让代码很难看 swift提供了一个解决方案:使用if同时设置数值 if let url = NSURL (string:"www.baidu.coms/s?word=") {
//代码执行到此,url就一定有值,所以不需要在使用 "!" let request = NSURLRequest(URL: url) } 实际的应用技巧 ?表示 可以有值(NSString),也可以没有值(nil) ? 如果对象为空,就不会调用后面的方法,感觉上和 OC中给nil发送消息类似 本质上不一样.如果对象是空,就不调用后面的放法 可以借助xcode智能提示确定使用 !还是 ? var string:NSString? string ="hello" 打印可选项的时候,会输出一个Optional,提示开发者是一个可选项 print(string?.length) 使用!的时候,要求string必须要有值,否则崩溃(不输出) print(string!.length) 目前的代码存在什么风险,如果string没有初始值,会直接崩溃 苹果把判断对象是否有值交给了开发工程师 let len =10 + string!.length 强烈推荐: ??用来快速判断对象是否为nil 本人感觉一般 ?? 和 ?连用,而非 ! let len2 =10 + (string?.length ?? 0) //有值时输出和,没有值时输出10 *****: ?? 的应用场景最多为: tableView的数据源方法,有没有数据都不会报错 var array:[String]? //追加一项内容 array = ["zhangsan","lisi"] print(array?.count ??0) 3,循环 传统的写法,和OC几乎一样 注意:使用var,而不是let for var i =0;i < 10;i++ { print(i) } 更加方便的写法: in指定范围 早期的swift是".."后来改成了"..<" for iin 0..<10 { //输出0~9 print(i) } for iin 0...10 { //输出0~10 print(i) } //如果遍历的时候,对索引下表不关注,可使用"_" for _in 0...5 { print("hello") } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |