这是我第一次使用NSCoder并且曾经有一个名为encodeInteger的方法,但它似乎已经在Swift 3中消失了,而且文档似乎没有帮助。
可能混淆在于Int和UInt64之间的区别。它们是一样的吗?
我应该使用NSKeyedArchiver,如果是这样,那么它如何符合NSCoding?
答案 0 :(得分:1)
为什么不使用NSNumber并将其编码为对象?它看起来像这样:
let bigNumber: UInt64 = /* 123 */
let number = NSNumber(value: bigNumber)
// Encoding it just like a String
coder.encode(number, forKey: "BigNumberKey")
// Decoding and using the property uint64Value from NSNumber to get the UInt64 back
if let object = coder.decodeObject(forKey: "BigNumberKey") as? NSNumber {
let decodedBigNumber = object.uint64Value
}
如果由于某种原因需要,NSCoder支持encoding of Int64(您可以投射它,描述为here)。
从encodeInteger
到encode
的更改是SE-0005的一部分(影响了很多不同的类; UIColor.blueColor()
现在是UIColor.blue()
,例如)。