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) 

我以不同的方式做了,但结果是一样的。我该如何解决它?

+0

序列化SKProduct可能会使用私有API。我建议只采取和存储所需的信息 – sargeras

+0

[如何在本地保存SKProduct对象?](http://stackoverflow.com/questions/14178790/how-to-save-skproduct-object-locally) – sargeras

+0

@sargeras不,它不是。我读了这个问题和答案,但我不能让它在SKProduct扩展迅速 – Alexander

我们解决了它,我们将SKProduct数组粘贴到单例中并使用它。我知道这是一个不好的解决方案,但我不知道另一个。