如何在Swift 3中使用NSCoder为歌曲编码PersistentID

时间:2016-06-30 17:51:00

标签: ios persistence

这是我第一次使用NSCoder并且曾经有一个名为encodeInteger的方法,但它似乎已经在Swift 3中消失了,而且文档似乎没有帮助。

可能混淆在于Int和UInt64之间的区别。它们是一样的吗?

我应该使用NSKeyedArchiver,如果是这样,那么它如何符合NSCoding?

以前是错误: enter image description here 之后没有错误: enter image description here

1 个答案:

答案 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)。

encodeIntegerencode的更改是SE-0005的一部分(影响了很多不同的类; UIColor.blueColor()现在是UIColor.blue(),例如)。