Swift 1.2 [AnyObject]没有名为' objectForKey'的成员。

时间:2015-05-08 05:32:04

标签: swift

升级到Swift 1.2后,出现错误:

name_temp="$name[@]"
array=("${!name_temp}")

代码:

[AnyObject] does not have member named 'objectForKey'

self.photoNames = objects.map { $0.objectForKey("PhotoName") as! String } 类型为objects

编辑:(更多代码)

[AnyObject]

2 个答案:

答案 0 :(得分:2)

objectForKey:NSDictionary的成员方法,而不是AnyObject。这是Reference

如果objectsNSDictionary的数组,请尝试以下操作:

self.photoNames = objects?.map { ($0 as? NSDictionary)?.objectForKey("PhotoName") as! String } ?? []

答案 1 :(得分:1)

您似乎假设objects是一个字典数组。要做的是证明它。你有这个:

if(error == nil){
    self.photoNames = objects.map { $0.objectForKey("PhotoName") as! String }
}

把这个:

if error == nil {
    if let objects = objects as? [[NSObject:AnyObject]] {
        self.photoNames = objects.map {$0["PhotoName"] as! String}
    }
}

仍然存在一些危险 - 如果其中一个词典没有“PhotoName”键或者该键的值不是字符串,则会崩溃 - 但至少上面应该编译。我们以后可以随时添加更多安全检查。