= (0, "老王")
元组操作
// 通过下标或者别名读取值
personInfo1.0
personInfo2.name
name
可选类型
// 可选类型使用
var user : String? = nil
// 给可选类型赋值(我们上面定义的可选类型为String类型,所以只能给他赋值String类型)
user = "laoWang"
// 可选类型取值(在可选类型内,只能通过强制解包来取出可选类型的真实类型)
// 强制解包方式一:
user!
// 需要注意的是,如果可选类型为nil(为空),强制取出其中的值(强制解包),会出错
// 强制解包方式二:
if user != nil {
print (user!)
}
// 为了在if语句里面方便使用user,我们可以定义一个可选绑定类型,这样也能达到严谨取值的效果(底层也是帮我们进行判断,有值就会解包)
if let userStr = user {
print (userStr)
}
注意:
1.如果可选类型为nil(为空),强制取出其中的值(强制解包),会出错,所以解包前需要进行判断
2.为了使用方便,解包会以可选绑定
的形式实现
// OC中,我们在定义一个包含中文的NSURL的时候是这样的
NSString *urlStr = @"http://www.xxxxx.com/中文/sie";
// 因为字符串中包含中文,所以需要对字符串进行UTF8编码转换,防止出现访问错误
NSString *str = [urlStr stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
// 再将其包装成NSURL
NSURL *url = [NSURL URLWithString:str];
// 在swift中,如果字符串中包含中文,且我们没有对其进行处理,那么就会直接返回nil
// 也就是说,url可能有值也可能没值,这时候就需要用可选类型来接收
// 方法一:标准写法
let url : NSURL? = NSURL(string: "http://www.xxxxx.com/中文/sie")
// 方法二:利用类型推导
let url2 = NSURL(string: "http://www.xxxxx.com/中文/sie")
// 方法三:可选绑定
if let temp = url {
let request = NSURLRequest(URL: temp)
print (request)
}
类型转化
- 类型转化符号
- as:将示例转成某一类型
- as?:判断是否有值,有则转换,没有则不转换(推荐)
- as!:不判断是否有值,直接转换(不安全)
- is:用来判断一个示例是否是某一种类型
// 定义一个数组
let array : [AnyObject] = ["laoWang", 15, 18.9]
// 取出数组中的第二个元素
let temp = array[1]
// 判断第一个元素类型是否为字符串
if temp is String {
print("true")
} else {
print("flase")
}
// 将objc转成真实类型
// 方式一:使用as?将AnyObject转成可选类型,通过判断可选类型是否有值,来决定是否转换成功
let age = temp as? Int
print(age)
// 方式二:使用as!将AnyObject转成真实类型,因为objc的真实类型为Int不是String,通过as!进行转换后,会直接报错
let age1 = temp as! String
print(age1)