在我的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?
答案 0 :(得分:0)
required convenience init?(coder aDecoder: NSCoder) {
let exBytesVideo = aDecoder.decodeInt64ForKey("myInt64Number")
}
func encodeWithCoder(aCoder: NSCoder) {
aCoder.encodeInt64(self.expectedBytesVideo, forKey: "myInt64Number")
}