функция realm.write не работает должным образом или любая другая проблема, чтобы сохранить данные в области в быстром - PullRequest
0 голосов
/ 15 декабря 2018

Невозможно сохранить данные в области.

Это мой файл 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)
}
}

Это мой код для записи данных в Realm с помощью Swift 4:

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.Благодаря этому методу проект автоматически закрывается во время выполнения.

Проблема записи данных в область.

...