Skip to content

Instantly share code, notes, and snippets.

@kmkrn
Created December 30, 2017 00:42
Show Gist options
  • Save kmkrn/d31a1760a2fd95c93b47095c6a46ff3e to your computer and use it in GitHub Desktop.
Save kmkrn/d31a1760a2fd95c93b47095c6a46ff3e to your computer and use it in GitHub Desktop.
import Foundation
import Realm
import RealmSwift
class CatPerson: Object, Decodable {
@objc dynamic var personId: Int = 0
@objc dynamic var firstName: String = ""
@objc dynamic var lastName: String = ""
var cats = List<Cat>()
override static func primaryKey() -> String? {
return "personId"
}
private enum CatPersonCodingKeys: String, CodingKey {
case personId
case firstName
case lastName
case cats
}
convenience init(personId: Int, firstName: String, lastName: String, cats: List<Cat>) {
self.init()
self.personId = personId
self.firstName = firstName
self.lastName = lastName
self.cats = cats
}
convenience required init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CatPersonCodingKeys.self)
let personId = try container.decode(Int.self, forKey: .personId)
let firstName = try container.decode(String.self, forKey: .firstName)
let lastName = try container.decode(String.self, forKey: .lastName)
let catsArray = try container.decode([Cat].self, forKey: .cats)
let catsList = List<Cat>()
catsList.append(objectsIn: catsArray)
self.init(personId: personId, firstName: firstName, lastName: lastName, cats: catsList)
}
required init() {
super.init()
}
required init(value: Any, schema: RLMSchema) {
super.init(value: value, schema: schema)
}
required init(realm: RLMRealm, schema: RLMObjectSchema) {
super.init(realm: realm, schema: schema)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment