Swift [String:AnyObject]不能转换为T Swift Arrays

时间:2014-10-09 13:44:46

标签: ios arrays swift

我在Swift Extension中工作。我试图将数据附加到类型[[String: AnyObject]]的数组。这是一个扩展的原因是因为我必须对很多数组进行这么多次。问题是,当我追加类型为[String: AnyObject]的对象时,我收到错误:Dictionary'<'String, AnyObject'>' Not Convertible to T(引号在那里,因为在胡萝卜中没有出现任何内容)。

mutating func appendData(data: [String: [String: AnyObject]]?) {
    if data != nil {
        for (id, object) in data! {
            var mutatingObject = object
            mutatingObject["id"] = id
            append(mutatingObject)
        }
    }
}

1 个答案:

答案 0 :(得分:1)

我不确定你到底想要达到的目标。但请注意 - 数组是存储特定类型的通用集合。 Extension for Array可能不知道在每种情况下将使用什么类型,因此它不能简单地允许您存储Dictionary<String, AnyObject>

以下是有关如何使代码更通用的示例:

extension Array {
    mutating func appendData(data: [String: T]?) {
        if data != nil {
            for (id, object) in data! {
                if var mutatingObject = object as? [String : AnyObject] {
                    mutatingObject["id"] = id
                }

                append(object)
            }
        }
    }
}