Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.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
Ios 如何在Swift中使用NSCoding保存Int64变量数组_Ios_Arrays_Swift - Fatal编程技术网

Ios 如何在Swift中使用NSCoding保存Int64变量数组

Ios 如何在Swift中使用NSCoding保存Int64变量数组,ios,arrays,swift,Ios,Arrays,Swift,我目前正在使用NSCoding保存Int变量数组,如下所示: var myArray = [Int]() myArray = aDecoder.decodeObjectForKey("MyArray") as! [(Int)] aCoder.encodeObject(myArray, forKey: "MyArray") 我现在需要保存一个Int64变量数组。我认为这很简单,所以我做了这个: var myNewArray = [Int64]() myNewArray = aDecoder

我目前正在使用NSCoding保存Int变量数组,如下所示:

var myArray = [Int]()

myArray = aDecoder.decodeObjectForKey("MyArray") as! [(Int)]

aCoder.encodeObject(myArray, forKey: "MyArray")
我现在需要保存一个Int64变量数组。我认为这很简单,所以我做了这个:

var myNewArray = [Int64]()

myNewArray = aDecoder.decodeObjectForKey("MyNewArray") as! [(Int64)]

aCoder.encodeObject(myNewArray, forKey: "MyNewArray")
但是,我在最后一行得到一个错误: 无法将“[Int64]”类型的值转换为预期的参数类型“AnyObject”

我不明白为什么它可以与Int一起工作,而不能与Int64一起工作。我怎样才能做到这一点

我不明白为什么它可以与Int一起工作,而不能与Int64一起工作。我怎样才能做到这一点

它实际上也不适用于Int。您必须有一个Objective-C对象数组,并且数字不是Objective-C中的对象

但是,Swift会自动将Int桥接到NSNumber,因此看起来它可以正常工作

对于Int64,它不这样做。您必须自己创建NSNumber对象

我不明白为什么它可以与Int一起工作,而不能与Int64一起工作。我怎样才能做到这一点

它实际上也不适用于Int。您必须有一个Objective-C对象数组,并且数字不是Objective-C中的对象

但是,Swift会自动将Int桥接到NSNumber,因此看起来它可以正常工作


对于Int64,它不这样做。您必须自己创建NSNumber对象。

在当前版本的Swift中,当您将
[Int]
转换为
任何对象
(或
任何对象?
)时,Swift生成包含
NSNumber
NSArray
。虽然
NSNumber
可以包含
Int64
(C/Objective-C中的
long-long-int
),但Swift不会自动将
Int64
转换为
NSNumber
,因此,
[Int64]
不能自动转换为
任何对象

您可以生成一个包含
NSNumber
NSArray

let myI64Array = aDecoder.decodeObjectForKey("MyNewArray") as! [NSNumber]
myNewArray = myI64Array.map{$0.longLongValue}
或:


在当前版本的Swift中,当您将
[Int]
转换为
AnyObject
(或
AnyObject?
)时,Swift生成包含
NSNumber
NSArray
。虽然
NSNumber
可以包含
Int64
(C/Objective-C中的
long-long-int
),但Swift不会自动将
Int64
转换为
NSNumber
,因此,
[Int64]
不能自动转换为
任何对象

您可以生成一个包含
NSNumber
NSArray

let myI64Array = aDecoder.decodeObjectForKey("MyNewArray") as! [NSNumber]
myNewArray = myI64Array.map{$0.longLongValue}
或:

看一看可能的解决办法。看一看可能的解决办法。