是否可以在RealmSwift中使用枚举?

Tik*_*der 5 enums realm ios swift

我想做这样的事情:

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"
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我收到一个错误:

属性不能标记为动态,因为其类型无法在Objective-C中表示

我怎么解决这个问题?谢谢你的帮助.

Tik*_*der 10

Realm没有直接的方式去做.Github问题.

但你可以考虑这个伎俩

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"
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 或者你可以用 `@objc` 标记枚举类型定义,如果它是一个 `Int` 枚举。 (2认同)