SKProduct在Swift NSCoding错误
问题描述:
我试图在领域保存SKProduct,但在乞讨我试图将SKProduct转换为NSData,但我得到这个错误由于未捕获异常'NSInvalidArgumentException'终止应用程序,原因: ' - [SKProduct encodeWithCoder:]:无法识别的选择发送到实例0x14f5cd200' *SKProduct在Swift NSCoding错误
我班
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
数组粘贴到单例中并使用它。我知道这是一个不好的解决方案,但我不知道另一个。
序列化SKProduct可能会使用私有API。我建议只采取和存储所需的信息 – sargeras
[如何在本地保存SKProduct对象?](http://stackoverflow.com/questions/14178790/how-to-save-skproduct-object-locally) – sargeras
@sargeras不,它不是。我读了这个问题和答案,但我不能让它在SKProduct扩展迅速 – Alexander