将Swift数组转换为NSArray

时间:2016-03-26 19:23:55

标签: swift

我刚开始使用Swift,我需要将一个Array转换为NSArray,以便写入plist文件。这是我的代码:

func saveDataToFile() {
        var a:Array = [Any]()
    for thing in self.objects {
        var dictionary = [String:Any]()
        dictionary["name"] = thing.name
        dictionary["location"] = thing.location
        a.append(dictionary)
    }
    let arr: NSArray = a
    cocoaArray.writeToFile(filePath, atomically:true);
}

当我尝试将a转换为NSArray arr时,我收到错误“无法将[Any]类型的值转换为指定类型的NSArray。”

1 个答案:

答案 0 :(得分:3)

您收到Cannot convert value of type [Any] to specified type NSArray,因为a的类型为[Any],您无法将其与NSArray联系起来。这是因为NSArray只能包含类类型的实例,Any可以表示任何类型的实例。

如果您要将a声明为[AnyObject],那么您可能会没事的。但是,您还需要将字典类型更改为[String:AnyObject]

或者您可以使用NSMutableArray,并完全放弃桥接:

var a = NSMutableArray()
for thing in objects {
    var dictionary = [String:AnyObject]()
    dictionary["name"] = thing.name
    dictionary["location"] = thing.location
    a.addObject(dictionary)
}
a.writeToFile(filePath, atomically: true)