Jar*_*rod 5 realm swift decodable
我有一个 JSON-API,它返回Courses. 它们Courses都有主键CourseLocations。我认为使用 解析所有内容并使用 更新它CourseTypes会很棒。CodableRealm().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 }
]
Run Code Online (Sandbox Code Playgroud)
但随后我调用另一个 API 方法“/courses”,它返回一个课程信息以及对象“类型”,但不是全部,只是它的id和name:
[
{
"id": "0013",
"name": "Super cool course",
"type": { "id": "2", "name": "Type 2" }
}
]
Run Code Online (Sandbox Code Playgroud)
因此,当我为课程执行“add(_:update:)”时,我实际上更新了对象的所有值CourseType,而不仅仅是名称。结果,mysessions和sessionTimeproperty 被设置为 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"
}
}
Run Code Online (Sandbox Code Playgroud)