結論
privateプロパティのときは@objcMembersを書いていても@objcを書かないとだめ
これでいけそうだけどだめで
@objcMembers
class Phone: Object {
dynamic var name = ""
private dynamic var osTypeRawValue = "" // privateの場合は@objcMembersを書いてあってもこれじゃだめ
var type: OSType {
get { return OSType(rawValue: osTypeRawValue) ?? .undefind }
set { osTypeRawValue = newValue.rawValue }
}
enum OSType: String {
case ios
case android
case undefind
}
}
こうするとOK
@objcMembers
class Phone: Object {
dynamic var name = ""
@objc private dynamic var osTypeRawValue = "" // @objcを明示的につける
var type: OSType {
get { return OSType(rawValue: osTypeRawValue) ?? .undefind }
set { osTypeRawValue = newValue.rawValue }
}
enum OSType: String {
case ios
case android
case undefind
}
}
こんな感じでenumが使える
let phone = Phone()
phone.type = .ios