gpt4 book ai didi

ios - Swift NSObject 属性不是可选的,但它打印可选

转载 作者:行者123 更新时间:2023-11-30 12:33:04 28 4
gpt4 key购买 nike

let allPlaces = resultsArray.map({ (param) -> Places in
return Places(dictionary: param )
})
print("All Places \(allPlaces[0].placeName)")

上述代码的输出为:

All Places Optional("Subway")

在下面的代码中,var 不是可选的。但 print 语句将其打印为可选。它不应该打印所有地方“地铁”吗?

class Places: NSObject {


var name:String!


init(dictionary:Dictionary<String, Any>) {

name = dictionary["name"] as? String
}
}

最佳答案

var name:String!

您已将 name 声明为隐式解包可选。从 Swift 3 开始,它只有在需要在本地进行类型检查时才会被强制解包。否则,它将被视为仅正常可选。

 print("All Places \(allPlaces[0].name)")

这里不涉及类型检查,因此 name 仍然是可选的。

如果你喜欢

let name:String = allPlaces[0].name
print("All Places \(name)")

输出将为“All Places Subway”

或者你需要强制打开它

 print("All Places \(allPlaces[0].name!)")

如果name为零,这会导致崩溃,你应该注意它。如果名称有可能为 nil,则使用 var name: String? 这样编译器会强制您显式解包。

关于ios - Swift NSObject 属性不是可选的,但它打印可选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43222287/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com