我收到“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
}
正确的方法是什么?
答案 0 :(得分:1)
可选绑定用于展开选项,您的steeringItems
和destinationPath
是非选项。
此外,因为destinationPath
是String
,可以自由地桥接到NSString
而steeringItems
是[SteeringItem]
,可以桥接到NSArray
{1}}(因为SteeringItem
是NSObject
) - 您可以自由地将它们上传到AnyObject
。因此,您不需要进行任何条件转换(因为它永远不会失败)。
所以不要使用可选绑定!只需直接分配属性:
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]
}