切换到Swift3之后我有:Type NSFastEnumerationIterator.Element(aka Any)没有下标成员

时间:2016-10-17 23:10:56

标签: ios swift nsmutablearray nsarray swift3

这实际上是对这个问题的跟进:how can I convert NSArray into specific String? Bryan的回答在我之前版本的Swift中对我有用,但现在当我转到if (defaults.object(forKey: "fb_friends") != nil) { var friends = (defaults.objectForKey("fb_friends") as! NSMutableArray) .map{$0["id"]!!} .joinWithSeparator(",") friends+=",\(defaults.stringForKey("facebookId")!)" params["friends"] = friends } 时,这段代码:

.map{$0["id"]!!}

,特别是这一行Type NSFastEnumerationIterator.Element (aka Any) has no subscript members 引发了一个错误:

ctx

这可能是什么问题?

1 个答案:

答案 0 :(得分:1)

错误消息很明显,您无法再从Swift 3中的Any访问下标成员。

在这种情况下,您可以将其投射到NSDictionary

var friends = (defaults.objectForKey("fb_friends") as! NSArray)
    .map{($0 as! NSDictionary)["id"] as! String}
    .joined(separator: ",")