升级到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]
答案 0 :(得分:2)
objectForKey:
是NSDictionary
的成员方法,而不是AnyObject
。这是Reference。
如果objects
是NSDictionary
的数组,请尝试以下操作:
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”键或者该键的值不是字符串,则会崩溃 - 但至少上面应该编译。我们以后可以随时添加更多安全检查。