2016-05-16 24 views
0

Ich versuche SKProduct in Realm zu speichern, aber beim Betteln versuche ich, SKProduct in NSData zu konvertieren, aber ich bekomme diesen Fehler Beenden App aufgrund der nicht abgefangenen Ausnahme 'NSInvalidArgumentException', Grund: '- [SKProduct encodeWithCoder:]: Unbekannter Selektor an Instanz gesendet 0x14f5cd200' *NSCoding Fehler mit SKProduct in Swift

Meine Klasse

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) 
    } 
} 

ich versuche es in einer anderen Klasse zu archivieren

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

Ich habe es auf verschiedene Arten gemacht, aber das Ergebnis ist das gleiche. Wie kann ich es reparieren?

+0

Serialisierung SKProduct würde wahrscheinlich fallen unter Verwendung einer privaten API. Ich würde vorschlagen, nur die erforderlichen Informationen davon zu nehmen und zu speichern – sargeras

+0

Mögliches Duplikat von [wie man SKProduct-Objekt lokal speichert?] (Http://stackoverflow.com/questions/14178790/how-to-save-skproduct-object-locally) – sargeras

+0

@sargeras Nein, ist es nicht. Ich lese diese Fragen und antworte, aber ich kann es nicht in SKProduct-Erweiterung in Swift machen – Alexander

Antwort

0

Wir lösten es, dass wir SKProduct Array in den Singleton einfügen und verwenden. Ich weiß, dass es eine schlechte Lösung ist, aber ich kenne keine andere.