2016-05-05 8 views
5

voglio fare qualcosa di simile:È possibile utilizzare le enumerazioni in RealmSwift?

enum WeekDay { 
    case Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday 
} 

class Person: Object { 

    dynamic var birthday: WeekDay? = .Monday 
    dynamic var id: String? = nil 
    dynamic var birthdayRaw: String? = nil 

    override static func primaryKey() -> String? { 
     return "id" 
    } 
} 

Ma, sto ottenendo un errore:

Property cannot be marked dynamic because its type cannot be represented in Objective-C

Come posso risolvere questo problema? Grazie per qualsiasi aiuto.

risposta

8

Il regno non ha un modo diretto di farlo. Github issue.

Ma si può considerare questo trucco

enum WeekDay: String { 
    case Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday 
} 

class Person: Object { 
    private var _day: WeekDay? 
    var birthday: WeekDay? { 
     get { 
      if let resolTypeRaw = birthdayRaw { 
       _day = WeekDay(rawValue: resolTypeRaw) 
       return _day 
      } 
      return .Sunday 
     } 
     set { 
      birthdayRaw = newValue?.rawValue 
      _day = newValue 
     } 
    } 

    dynamic var id: String? = nil 
    dynamic var birthdayRaw: String? = nil 

    override static func primaryKey() -> String? { 
     return "id" 
    } 
} 
+0

Oppure è possibile contrassegnare la definizione del tipo enum con '@ objc' se si tratta di un' Int' enum. – blwinters