Я только что собрал последнюю версию своего приложения и столкнулся с проблемой, когда List
s на всех моих объектах области не сохраняется.
Вот пример кода:
Объект:
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 из ответа на сетевой запрос:
// 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. Кроме того, мой код просто отлично работает в отладке, а не в выпуске.Кто-нибудь еще сталкивался с этой проблемой?