2014-10-18 8 views
7

Ich habeEncode/Decode Enum für Swift (Xcode 6.1)

var priority : Priority! = Priority.defaultPriority 

func encodeWithCoder(aCoder: NSCoder) { 
     aCoder.encodeInteger(priority.toRaw(), forKey: "priority") //toRaw may not yield the result I am expecting 
    } 

    required init(coder aDecoder: NSCoder) { 
     priority = aDecoder.decodeIntegerForKey("priority") //complaining about conflicting types 
    } 

mit dem Enum ist folgendes:

enum Priority : Int { 
     case defaultPriority = 0 
     case lowPriority = 1 
     case mediumPriority = 2 
     case highPriority = 3 
    } 

Was ist der beste Weg, dies zu kodieren/dekodieren?

+0

Ähnliche Fragen: http://stackoverflow.com/questions/26326645/how-doi-i-encode-enum-using-nscoder-in-swift. –

Antwort

17

Priority.init(rawValue:) sollte funktionieren.

func encodeWithCoder(aCoder: NSCoder) { 
    aCoder.encodeInteger(priority.rawValue, forKey: "priority") 
} 

required init(coder aDecoder: NSCoder) { 
    priority = Priority(rawValue: aDecoder.decodeIntegerForKey("priority")) 
} 
+1

Danke, dass Sie das Update für 6.1 hinzugefügt haben. – jpittman

+0

Vielen Dank. – Aaronium112

Verwandte Themen