美文网首页
swift-解包方式

swift-解包方式

作者: malgee | 来源:发表于2018-03-21 16:04 被阅读19次
var ss: String? = "hello"

// 方式一 !强制解包

if ss != nil {
    
    print(ss!)    // 执行到这里 一定有值
}

// 方式二  加一个?

 var aa = ss?.uppercased()   // 执行到这里 aa 可能有值,也可能没有值, 但是不会报错

// 方式三 if let

if let ss = ss {
    
    print(ss)     // ss 一定有值
}

if let ss = ss?.uppercased() {
    
    print(ss)
}

// 方式四 ??  

let bb = ss ?? "hi"    // bb一定有值


// 方式五 guard let

 let dd : String? = "hello"
        
 guard let qq = dd else {
            
        return 
   }
   // 执行到之处 qq 一定有值
 print(qq)

隐士可选性使用示例

class City
{
    let cityName: String
    var country: Country
    
    init(cityName: String, country: Country) {
        
        self.cityName = cityName
        
        self.country = country;
    }
    
}

class Country
{
    let countryName: String
    var capitalCity: City!    // 这里的 City! 是隐士可选性
    
    init(countryName: String, capitalCity: String)
    {
        self.countryName = countryName
        
      // 这里传的参数self(Country)还没创建完成,所以City也没有被创建出来, 就会造成上面的City可能是空, 所以需要 隐士的可选性形式 表示类型
        self.capitalCity = City(cityName: capitalCity, country: self) 
    }
    
    func showInfo()
    {
        print("This is \(countryName).")
        
        print("The capital is \(capitalCity.cityName).")
        
    }
}

Country(countryName: "China", capitalCity: "beijing").showInfo()

相关文章

网友评论

      本文标题:swift-解包方式

      本文链接:https://www.haomeiwen.com/subject/admgqftx.html