【问题标题】:After switching to Swift3 I have: Type NSFastEnumerationIterator.Element (aka Any) has no subscript members切换到 Swift3 后,我有: NSFastEnumerationIterator.Element 类型(又名 Any)没有下标成员
【发布时间】:2016-10-17 23:10:55
【问题描述】:

这实际上是对这个问题的跟进:how can I convert NSArray into specific String? Bryan 的答案在以前版本的 Swift 中对我有用,但现在当我转到 Swift 3 时,这段代码:

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

这里可能有什么问题?

【问题讨论】:

    标签: ios swift nsmutablearray nsarray swift3


    【解决方案1】:

    错误消息很清楚,您不能再在 Swift 3 中从 Any 访问下标成员。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多