如何使用NSCoding保存Int64变量

时间:2016-09-03 13:30:05

标签: ios swift int64

在我的iOS应用程序中,我有一个数字变量,从0开始,但最终可能会达到3,000,000,000,000。

如果我将它声明为Int,它将在64位设备上正常,因为Int类型将引用Int64类型(最大值9,223,372,036,854,775,807)。但在32位设备上,Int类型将引用Int32类型,其最大值为2,147,483,647。那显然太小了。

那么如何最好地解决这个问题并使其在32位设备上正常运行?

如果我理解正确,我可以将变量声明为Int64,它在32位和64位设备上都可以正常使用:

  var myNumber:Int64 = 0

但是,我使用NSCoding来保存我的数据,并在尝试编码和解码时收到错误消息:

myNumber = aDecoder.decodeIntegerForKey("MyNumber")

错误:无法指定类型' Int'的值输入' Int64'

aCoder.encodeInteger(myNumber, forKey: "MyNumber")

错误:无法转换类型' Int64'的值预期参数类型' Int'

那么如何将NSCoding与此变量一起使用?或者是否有更好的方法来处理我的大数字而不是将其声明为Int64?

1 个答案:

答案 0 :(得分:0)

required convenience init?(coder aDecoder: NSCoder) {
    let exBytesVideo = aDecoder.decodeInt64ForKey("myInt64Number")
}

func encodeWithCoder(aCoder: NSCoder) {
    aCoder.encodeInt64(self.expectedBytesVideo, forKey: "myInt64Number")
}