设为首页 加入收藏

TOP

swift 2.2 语法 (上)(四)
2017-10-13 10:33:18 】 浏览:7040
Tags:swift 2.2 语法
= (0, "老王")
  • 元组操作


    //  通过下标或者别名读取值
    personInfo1.0
    
    personInfo2.name
    
    name
    
  • 可选类型

    • 可选类型作用:
      • 在OC中,如果一个变量暂停不适用,可以赋值为0(基本属性类型)或赋值为空(对象类型)
      • 在swift中,nil被定义为一个特殊的类型,因为和真是的类型不匹配是不能赋值的(强类型语言特性)
      • 为了在开发中赋值为nil,毕竟很经常用到,所以推出了可选类型
      • 可选类型的取值为:
        • 空值
        • 有值
    • 可选类型定义
      • 基本写法(不常用)


      //  基本写法
      let user : Optional<String> = nil
      
      • 糖语法(推荐)


      //  糖语法
      let user : String? = nil
      
    • 可选类型简单使用
    //  可选类型使用
    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)
      

    首页 上一页 1 2 3 4 下一页 尾页 4/4/4
    】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
    上一篇【IOS】自定义可点击的多文本跑马.. 下一篇OC NSSet

    最新文章

    热门文章

    Hot 文章

    Python

    C 语言

    C++基础

    大数据基础

    linux编程基础

    C/C++面试题目