切换到 Swift3 后我有: Type NSFastEnumerationIterator.Element (aka Any) has no subscript members
After switching to Swift3 I have: Type NSFastEnumerationIterator.Element (aka Any) has no subscript members
这实际上是对这个问题的跟进: Bryan 的回答在以前版本的 Swift 中对我有用,但现在当我转到 Swift 3
时,此代码:
if (defaults.object(forKey: "fb_friends") != nil) {
var friends = (defaults.objectForKey("fb_friends") as! NSMutableArray)
.map{[=11=]["id"]!!}
.joinWithSeparator(",")
friends+=",\(defaults.stringForKey("facebookId")!)"
params["friends"] = friends
}
尤其是这一行 .map{[=14=]["id"]!!}
给我一个错误:
Type NSFastEnumerationIterator.Element (aka Any) has no subscript members
这可能是什么问题?
报错信息很明确,您无法再访问Any
in Swift 的下标成员 3.
在这种情况下,您可以将其转换为 NSDictionary
。
var friends = (defaults.objectForKey("fb_friends") as! NSArray)
.map{([=10=] as! NSDictionary)["id"] as! String}
.joined(separator: ",")
这实际上是对这个问题的跟进:Swift 3
时,此代码:
if (defaults.object(forKey: "fb_friends") != nil) {
var friends = (defaults.objectForKey("fb_friends") as! NSMutableArray)
.map{[=11=]["id"]!!}
.joinWithSeparator(",")
friends+=",\(defaults.stringForKey("facebookId")!)"
params["friends"] = friends
}
尤其是这一行 .map{[=14=]["id"]!!}
给我一个错误:
Type NSFastEnumerationIterator.Element (aka Any) has no subscript members
这可能是什么问题?
报错信息很明确,您无法再访问Any
in Swift 的下标成员 3.
在这种情况下,您可以将其转换为 NSDictionary
。
var friends = (defaults.objectForKey("fb_friends") as! NSArray)
.map{([=10=] as! NSDictionary)["id"] as! String}
.joined(separator: ",")