Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Swift数组转换为NSArray_Swift - Fatal编程技术网

将Swift数组转换为NSArray

将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

我刚刚开始使用Swift,我需要将数组转换为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。”

您得到的是
无法将[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,这更简单,并且消除了我的问题。谢谢