[String-6ren">
gpt4 book ai didi

Swift:不需要条件转换但需要 "must"?

转载 作者:行者123 更新时间:2023-11-28 06:42:59 25 4
gpt4 key购买 nike

我收到“as?AnyObject”的警告“条件转换总是成功”。所以 ”?”不需要!?如果我删除“?”,我会得到一个错误,我必须有“可选”:

func toDictionary() -> [String: AnyObject] {
var retval = [String: AnyObject]()
if let
steeringItems = self.steeringItems as? AnyObject,
destinationPath = self.destinationPath as? AnyObject
{
retval["steeringItems"] = steeringItems
retval["gDstPath"] = destinationPath
}
return retval
}

正确的做法是什么?

最佳答案

可选绑定(bind)用于解包可选值,您的 steeringItemsdestinationPath 是非可选值。

此外,因为 destinationPath 是一个 String,它可以自由桥接到 NSStringsteeringItems 是一个[SteeringItem],它可以桥接到 NSArray(因为 SteeringItem 是一个 NSObject)——你可以自由地-将它们转换为 AnyObject。因此,您不需要进行任何条件转换(因为它永远不会失败)。

所以不要使用可选绑定(bind)!直接分配属性即可:

func toDictionary() -> [String:AnyObject] {

var retval = [String: AnyObject]()

retval["steeringItems"] = steeringItems
retval["gDstPath"] = destinationPath

return retval
}

或者更简洁:

func toDictionary() -> [String:AnyObject] {
return ["steeringItems":steeringItems, "gDstPath":destinationPath]
}

关于Swift:不需要条件转换但需要 "must"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37389217/

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