2014-10-18 14 views
7

hoCodifica/decodifica enum per 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 
    } 

con l'enumerazione è il seguente:

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

Qual è il modo migliore di codificare/decodificare questo?

+0

Domanda simile: http://stackoverflow.com/questions/26326645/how-do-i-encode-enum-using-nscoder-in-swift. –

risposta

17

Priority.init(rawValue:) dovrebbe funzionare.

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

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

Grazie per aver aggiunto l'aggiornamento per 6.1. – jpittman

+0

Grazie di cuore. – Aaronium112

Problemi correlati