2016-05-16 9 views
0

SKProductを領域に保存しようとしていますが、SKProductをNSDataに変換しようとしていますが、このエラーが発生します。キャッチされない例外 'NSInvalidArgumentException' ' - [SKProduct encodeWithCoder:]:認識されていないセレクタがインスタンス0x14f5cd200に送られた' *SwiftでのSKProductの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) 
    } 
} 

私は別のクラスに

それをアーカイブしてみてください

私はそれをさまざまな方法で行いましたが、結果は同じです。どうすれば修正できますか?

+0

SKProductをシリアライズすると、プライベートAPIを使用する可能性があります。 – sargeras

+0

[SKProductオブジェクトをローカルに保存する方法は?](http://stackoverflow.com/questions/14178790/how-to-save-skproduct-object-locally)の重複の可能性があります。 – sargeras

+0

@sargerasいいえ、そうではありません。私はこの質問と答えを読んだが、私はすぐにSKProductの拡張でそれを作ることができない – Alexander

答えて

0

SKProductアレイをシングルトンに貼り付けて使用するように解決しました。私はそれが悪い解決策だが、私は別のものを知らない。

関連する問題