반응형
Realm 모델의 속성으로 열거 형 사용
모델의 속성으로 Enum을 사용할 수 있습니까? 현재 다음과 같은 수업이 있습니다.
class Checkin: RLMObject {
dynamic var id: Int = 0
dynamic var kind: String = "checked_in"
var kindEnum: Kind = .CheckedIn {
willSet { self.kind = newValue.rawValue }
}
enum Kind: String {
case CheckedIn = "checked_in"
case EnRoute = "en_route"
case DroppedOff = "dropped_off"
}
....
}
잘 작동하지만 kind
속성을 Enum으로 만들고 Realm .rawValue
이 객체를 저장소에 저장할 때 속성을 자동으로 호출 하도록하고 싶습니다 . Realm에서 이것이 가능합니까 아니면 이미 거기에 기능 요청이 있습니까?
kindEnum
이 경우의 setter 및 getter를 재정의해야합니다 .
enum Kind: String {
case CheckedIn
case EnRoute
case DroppedOff
}
class Checkin: Object {
@objc dynamic var id = 0
var kind = Kind.CheckedIn.rawValue
var kindEnum: Kind {
get {
return Kind(rawValue: kind)!
}
set {
kind = newValue.rawValue
}
}
}
이 모델을 좀 더 다듬 었습니다.
enum Thing: String {
case Thing1
case Thing2
case Thing3
}
그런 다음 Realm 클래스 객체에서 :
class myClass : Object {
private dynamic var privateThing = Thing.Thing1.rawValue
var thing: Thing {
get { return Thing(rawValue: privateThing)! }
set { privateThing = newValue.rawValue }
}
}
이를 통해
myClassInstance.thing = .Thing1
( "Thing1"을 privateThing에 저장), 그러나
myClassInstance.privateThing = "Thing4"
유효한 값이 아니므로 데이터 무결성을 유지합니다.
Realm은 Objective-C 열거 형을 지원하고 표현할 Int
수 있기 때문에 다음을 사용할 수 있습니다.
class Checkin: Object {
dynamic var id: Int = 0
dynamic var kind: Kind = .checkedIn
@objc enum Kind: Int {
case checkedIn
case enRoute
case droppedOff
}
....
}
If you need to parse to/from String
you can use a custom initializer for Kind
and an toString
function.
There is a discussion about this in GitHub
This works with Swift 3.0
and Realm 2.0.2
참고URL : https://stackoverflow.com/questions/29123245/using-enum-as-property-of-realm-model
반응형
'developer tip' 카테고리의 다른 글
그리드 간격 변경 및 Matplotlib에서 눈금 레이블 지정 (0) | 2020.12.03 |
---|---|
Windows.Web.Http.HttpClient 클래스를 사용한 PATCH 비동기 요청 (0) | 2020.12.03 |
React Native의 setTimeout (0) | 2020.12.03 |
템플릿 제약 C ++ (0) | 2020.12.03 |
dict ()와 {}의 차이점은 무엇입니까? (0) | 2020.12.03 |