我刚开始使用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。”
答案 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)