我有一个JSON-API,它向我返回Courses
的数组。 Courses
有CourseLocations
,CourseTypes
等。它们都有主键。我认为最好使用Codable
解析所有内容并使用Realm().add(_:update:)
更新它。
一切正常。当API没有返回完整的对象时,就会出现问题。
说。 API“ / types”返回下面的数组,并且包含创建或更新对象的所有必要数据。
[
{ "id": "1", "name": "Type 1", "sessions": 10, "sessionTime": 120.0 },
{ "id": "2", "name": "Type 2", "sessions": 5, "sessionTime": 20.0 }
]
但是随后我将另一个API方法称为“ / courses”,它向我返回课程信息以及对象“ types”,但不是全部,只是其id
和name
:
[
{
"id": "0013",
"name": "Super cool course",
"type": { "id": "2", "name": "Type 2" }
}
]
因此,当我对课程进行“ add(_:update :)”时,实际上是更新CourseType
对象的所有值,而不仅仅是名称。结果,我的sessions
和sessionTime
属性设置为0。
如何避免呢?
这里是参考类。
class CourseType: Object, Decodable {
@objc dynamic var identifier = UUID().uuidString
@objc dynamic var name = ""
@objc dynamic var sessions = 0
@objc dynamic var sessionTime = 0.0
private enum CodingKeys: String, CodingKey {
case identifier = "id"
case name
case sessions
case sessionTime = "session_time"
}
override static func primaryKey() -> String {
return "identifier"
}
}