2016-04-10 9 views
2

Ich versuche, die Autokorrektur durch SymSpellNSCoder swift kann nicht auf ein abstraktes Objekt der Klasse geschickt wird NSCoder

zu implementieren Ich habe das Wörterbuch im Container App erstellt und soll es speichern und von der Tastatur Erweiterung lesen

das Wörterbuch ein dictionaryItem Objekt enthält, die serialisiert werden muss durch NSCoder gespeichert werden

ich die Methoden für das Objekt hinzuzufügen versucht, aber ich habe einen Fehler „init (Coder adecoder NSCoder) swift nicht ein gesendet werden können abstraktes Objekt der Klasse NSCoder "

required init(coder aDecoder: NSCoder) { 
    if let suggestions = aDecoder.decodeObjectForKey("suggestions") as? [Int] { 
     self.suggestions = suggestions 
    } 
     if let count = aDecoder.decodeObjectForKey("count") as? Int { 
     self.count = count 
     } 
} 
func encodeWithCoder(aCoder: NSCoder) { 
    if let count = self.count as? Int { 
     aCoder.encodeObject(count, forKey: "count") 
    } 
    if let suggestions = self.suggestions as? [Int] { 
     aCoder.encodeObject(suggestions, forKey: "suggestions") 
    } 
} 

Irgendwelche Gedanken, wie man das repariert?

Antwort

1
import Foundation 

class SuggestionModel: NSObject, NSCoding { 
    var suggestions: [Int]? 
    var count : Int? 

    required init(coder aDecoder: NSCoder) { 
     self.suggestions = aDecoder.decodeObjectForKey("suggestions") as? [Int] 
     self.count = aDecoder.decodeObjectForKey("count") as? Int 
     super.init() 
    } 

    func encodeWithCoder(aCoder: NSCoder) { 
     aCoder.encodeObject(self.count, forKey: "count") 
     aCoder.encodeObject(self.suggestions, forKey: "suggestions") 
    } 

    override init() { 
     super.init() 
    } 
} 
Verwandte Themen