swift入门语法&&基础教程
来源:互联网 发布:2016网络对唱歌曲大全 编辑:程序博客网 时间:2024/04/27 15:27
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,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")
}
- swift入门语法&&基础教程
- Swift语法入门
- Swift初窥----语法入门
- [Swift]语法入门
- Swift入门基础语法
- Swift初窥----语法入门
- Swift入门基础语法
- Swift,语法入门学习
- Swift基础教程
- 读书笔记-《Swift语言实战入门》-语法部分
- swift学习1-入门+基本语法
- Swift快速入门-swift基础语法和函数-最直观学习swift
- swift的基础教程
- Swift语言基础教程
- swift语法
- Swift语法
- Swift语法
- Swift 语法
- poj1014(多重背包)
- 苹果系统VMware tool安装,实现虚拟系统全屏化
- Cocos游戏移植到Windows10之路--环境搭建
- (十八) php.ini 指令
- 使用AFNetworking上传相册或拍照的图片
- swift入门语法&&基础教程
- java
- CF Round#343(2)-B-暴力求解
- mongodb
- 构造方法
- IOS开发基础之UINavigationController
- java35.HTTP通信------使用HttpClient进行Post方式通信
- mybatis实体类字段名与数据库字段名不匹配问题
- bozj2186 [Sdoi2008]沙拉公主的困惑