我正在尝试将 SKProduct 保存在 Realm 中,但在乞求时,我正在尝试将 SKProduct 转换为 NSData,但收到此错误由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[SKProduct” encodeWithCoder:]: 无法识别的选择器发送到实例 0x14f5cd200' *
我的类(class)
import Foundation
import StoreKit
class ProductDataModel: NSObject, NSCoding {
var product = SKProduct()
// MARK: - var and let
private let coderKey = "ProductDataModel"
override init() {
super.init()
}
convenience init(product: SKProduct) {
self.init()
self.product = product
}
required init?(coder aDecoder: NSCoder) {
self.product = aDecoder.decodeObjectForKey(coderKey) as! SKProduct
}
func encodeWithCoder(aCoder: NSCoder) {
aCoder.encodeObject(self.product, forKey: coderKey)
}
}
我尝试将其存档到另一个类中
let productData = ProductDataModel(product: product)
let data = NSKeyedArchiver.archivedDataWithRootObject(productData)
我用了不同的方法,但结果是一样的。我该如何修复它?
最佳答案
我们通过将 SKProduct
数组粘贴到单例并使用它来解决这个问题。我知道这是一个糟糕的解决方案,但我不知道还有其他解决方案。
关于swift - Swift 中 SKProduct 的 NSCoding 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37253829/