2016-05-16 66 views
0

我試圖在領域保存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

回答

0

我們解決了它,我們將SKProduct數組粘貼到單例中並使用它。我知道這是一個不好的解決方案,但我不知道另一個。