2014-10-18 17 views
7

BenKodlama/Swift (Xcode 6.1) için Decode enum aşağıdaki olmanın enum ile

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 
    } 

:

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

kodlamak için en iyi yolu nedir/kod çözme bu?

+0

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

cevap

17

Priority.init(rawValue:) çalışmalıdır.

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

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

6.1 güncellemesini eklediğiniz için teşekkür ederiz. – jpittman

+0

Çok yardımcı olduğunuz için teşekkür ederim. – Aaronium112