두 가지 유형이 필요하다고 생각하지 않습니다. 제 제안은 Realm의 Object
클래스에서 상속받은 Swift 클래스로 객체를 만든 다음 Unbox에서 제공하는 Unboxable
프로토콜을 준수하는 것입니다. Unbox의 페이지에있는 예제에서는 구조체 모델을 사용하지만 코드 나 문서에는 클래스가 작동하지 않음을 나타내는 내용이 없습니다.
영역 모델 객체는 다른 클래스와 마찬가지로 작동합니다. 데이터베이스에 저장하려는 객체, 메소드 및 초기화 프로그램을 정의 할 수 있으며 영역을 무시하도록 할 속성을 지정할 수도 있습니다. 이렇게하면 영역 모델 역할을하는 객체와 Unbox와 호환되는 JSON 모델을 모두 만들 수 있습니다.
class ProviderRealm: Object, Unboxable {
dynamic var identifier: String = "demo"
dynamic var name: String?
dynamic var logo: String?
/// Initializer used for unboxing of JSON string
required init(unboxer: Unboxer) throws {
self.identifier = (try? unboxer.unbox(key: "identifier")) ?? "demo"
self.name = try? unboxer.unbox(key: "name")
self.logo = try? unboxer.unbox(key: "logo")
super.init()
}
required init(realm: RLMRealm, schema: RLMObjectSchema) {
super.init(realm: realm, schema: schema)
}
required init() {
super.init()
}
required init(value: Any, schema: RLMSchema) {
super.init(value: value, schema: schema)
}
override static func primaryKey() -> String? {
return "identifier"
}
}