2016-10-17 24 views
-1

这实际上是一个跟进到这个问题:how can I convert NSArray into specific String?布莱恩的答案在我以前的版本的Swift工作,但现在当我搬到Swift 3,此代码:切换到Swift3后,我有:类型NSFastEnumerationIterator.Element(又名)没有下标成员

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 

可能是什么问题就在这里?

回答

1

该错误信息是明确的,你可以不再从Any访问标成员斯威夫特3.

在这种情况下,你可以将其转换为NSDictionary

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