Swift 中 SKProduct 的 NSCoding 错误

NSCoding error with SKProduct in Swift

我正在尝试将 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)
    }
}

我试着把它存档在另一个class

 let productData = ProductDataModel(product: product)
 let data = NSKeyedArchiver.archivedDataWithRootObject(productData)

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

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