2016-05-05 9 views
5

私はこのような何かやりたい:RealmSwiftでenumを使用することはできますか?

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

をしかし、私はエラーを取得しています:

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

どのように私はこの問題を解決することができますか?助けてくれてありがとう。

答えて

8

レルムに直接的な方法はありません。 Github issue.

しかし、あなたはこのトリック

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

を考慮することができるか、それは 'Int'列挙型である場合は、' @ objc'と列挙型定義をマークすることができます。 – blwinters

関連する問題