无法将数据保存到领域。
这是我的JSON文件:
{
"OrderList": [
{
"orderId": 16976,
"userId": 4905,
"pickupdate": "2018-09-23"
},
{
"orderId": 52,
"userId": 4905,
"pickupdate": "2018-08-07"
}
],
"TotalOrder": 2
}
这是领域的模型对象类(问题1。如果没有其他方法,是否有必要对对象使用Decodable类? 问题2。这是为Realm编写模型类的正确方法吗?):
class UserOrderHistory: Object, Decodable {
@objc dynamic var orderlist: OrderList?
let TotalO = RealmOptional<Int>()
enum CodingKeys: String, CodingKey {
case orderlist = "OrderList"
case TotalO = "TotalOrder"
}
convenience required init(from decoder: Decoder) throws {
self.init()
let container = try decoder.container(keyedBy: CodingKeys.self)
self.orderlist = try container.decodeIfPresent(OrderList.self, forKey: .orderlist)
self.TotalO.value = try container.decodeIfPresent(Int.self, forKey: .TotalO)
}
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)
}
}
class OrderList: Object, Decodable{
let orderId = RealmOptional<Int>()
let userId = RealmOptional<Int>()
@objc dynamic var pickupdate: String? = nil
enum CatCodingKeys: String, CodingKey {
case orderId
case userId
case pickupdate
}
convenience required init(from decoder: Decoder) throws {
self.init()
let container = try decoder.container(keyedBy: CatCodingKeys.self)
self.orderId.value = try container.decodeIfPresent(Int.self, forKey: .orderId)
self.userId.value = try container.decodeIfPresent(Int.self, forKey: .userId)
self.pickupdate = try container.decodeIfPresent(String.self, forKey: .pickupdate)
}
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)
}
}
这是我使用Swift 4将数据写入Realm的代码:
let realm = try! Realm()
let decoder = JSONDecoder()
do {
let userdata = try decoder.decode(UserOrderHistory.self, from: data)
try? realm.write {
realm.add(userdata.orderlist!)
}
} catch {
print(error)
}
这是完整的代码。我在realm.write中遇到问题。由于这种方法,项目会在运行时自动关闭。
将数据写入Realm的问题。