Я только что создал последнюю версию своего приложения и столкнулся с проблемой, когда не сохраняются List
для всех объектов моей области.
Вот пример кода:
Объект:
public class ReportItem: Object {
@objc dynamic var id: String!
@objc dynamic var someDate: Date?
// This contains another List as one of its properties
let list = List<OtherRealmObject>()
override public class func primaryKey() -> String {
return "id"
}
convenience public init(id: String, date: Date) {
self.init()
self.id = id
self.date = date
}
}
Этот объект создается json mapper из ответа на сетевой запрос:
// Convert json to dictionary then
guard let id = json["id"] as? String else {
return nil
}
let date = json["date"] as? Date
let objects = json["someObjects"] as? [String: Any]
let someRealmObjects = [OtherRealmObject]()
objects.forEach { object in
// Create some realm object
someRealmObjects.append(newSomeRealmObject)
}
let reportItem: ReportItem?
if let date = date?.convertToDateFromString() {
reportItem = ReportItem(id: id, date: date)
} else {
return nil
}
reportItem!.list.append(objectsIn: someRealmObjects)
return reportItem!
Затем это передается обратно в мой контроллер представления и сохраняется так:
// Report item is the item we just created in the json mapper
someNetworkOperation.success = { reportItem in
DispatchQueue.main.sync {
let realm = try! Realm()
try! realm.write {
realm.add(reportItem, update: true)
}
}
}
Затем элемент извлекается где-то еще, однако list
пуст, и когда я пытаюсь фильтровать, я получаю сообщение об ошибке This method may only be called on RLMArray instances retrieved from an RLMRealm
. По какой-то причине мой список не сохраняется, когда я добавляю объект отчета в базу данных.
Раньше это работало, однако в последнюю неделю или около того оно перестало работать. Мне интересно, связано ли это с обновлением до Swift 4.2/Xcode 10. Кроме того, мой код отлично работает в отладке, а не в выпуске. Кто-нибудь еще сталкивался с этой проблемой?