2015-03-08 7 views
8

Kann ein Tupel mit NSCoding gespeichert werden? Ich habe ein Tupel wie ((UInt8, UInt8), (UInt8, UInt8)). Aber aCoder.encodeObject(myTuple) funktioniert nicht. Muss ich das Tupel in NSData konvertieren oder ist das absolut nicht möglich? Danke für jede HilfeSwift Codetupel mit NSCoding

Antwort

5

Tuple kann nicht codiert werden, weil es keine Klasse ist, aber ein Ansatz besteht darin, jede Komponente eines Tupels separat zu codieren und dann dekodieren Sie jede Komponente und setzen dann den Wert des Tupels auf ein Tupel konstruiert aus dem dekodierten Inhalt.

0

Ich möchte nur meinen Code teilen, der einige Updates auf der Grundlage von Ians Code hat. Ich habe meins verwendet, um eine Liste der Kategorie/Unterkategorie der Elemente zu erstellen.

class catSubcatOption: NSObject, NSCoding { 

var element: (x: String, y: String)! 

override init() { 

} 

public func encode(with aCoder: NSCoder) { 
    aCoder.encode(element.category, forKey: "category") 
    aCoder.encode(element.subcategory, forKey: "subcategory") 
} 

required init(coder decoder: NSCoder) { 
    let category = decoder.decodeObject(forKey: "category") as! String 
    let subcategory = decoder.decodeObject(forKey:"subcategory") as! String 
    element = (category,subcategory) 
} } 
Verwandte Themen