将Swift数组转换为NSArray
我刚刚开始使用Swift,我需要将数组转换为NSArray,以便写入plist文件。这是我的密码:将Swift数组转换为NSArray,swift,Swift,我刚刚开始使用Swift,我需要将数组转换为NSArray,以便写入plist文件。这是我的密码: func saveDataToFile() { var a:Array = [Any]() for thing in self.objects { var dictionary = [String:Any]() dictionary["name"] = thing.name dictionary["location"] = t
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。”您得到的是
无法将[Any]类型的值转换为指定类型的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)
您得到的
无法将[Any]类型的值转换为指定的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)
你能展示self.objects的声明吗。具体是什么?var objects=[AnyObject]()可以显示self.objects的声明吗。具体是什么?var objects=[AnyObject]()我想我将使用NSMutableArray,这更简单,并且消除了我的问题。谢谢我想我会改用NSMutableArray,这更简单,并且消除了我的问题。谢谢