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
数组粘贴到单例中并使用它就解决了。我知道这是一个糟糕的解决方案,但我不知道另一个。
我正在尝试将 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
数组粘贴到单例中并使用它就解决了。我知道这是一个糟糕的解决方案,但我不知道另一个。