2016-05-05 10 views
5

Ich möchte so etwas wie dies zu tun:Kann ich in RealmSwift Enums verwenden?

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" 
    } 
} 

Aber ich erhalte eine Fehlermeldung:

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

Wie kann ich dieses Problem lösen? Danke für jede Hilfe.

Antwort

8

Realm hat keinen direkten Weg es zu tun. Github issue.

Aber man kann diesen Trick

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

betrachten Oder Sie können mit '@ objc' den Aufzählungstyp Definition zu markieren, wenn es sich um eine' Int' Enum ist. – blwinters