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

How do i encode a PersistentID for a song using NSCoder in Swift 3

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

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

我应该使用 NSKeyedArchiver 吗?如果是的话,它如何工作以符合 NSCoding?

这是之前的错误: 在没有错误之后:

为什么不使用 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 (and you could cast it, described here).


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