Мне нужно записать огромные данные (например, 200000 входных данных) в область, и я использовал realm.add () для записи данных в фоновом потоке. Но он получил сообщение об ошибке:
Завершение работы приложения из-за необработанного исключения «RLMException», причина: «Доступ к области из неверного потока.»
let cities = try decoder.decode([City].self, from: dataFromStream)
let dispatchQueue = DispatchQueue(label: "com.example.myApp.bg", qos: .background)
dispatchQueue.async {
let myBackgroundRealm = try! Realm()
myBackgroundRealm.beginWrite()
for city in cities {
myBackgroundRealm.add(city, update: false)
}
try! myBackgroundRealm.commitWrite()
}
Поэтому я перехожу на использование Realm.create (), и оно работает. Но я до сих пор не понимаю, в чем разница между Realm.create () и Realm.add () при записи больших данных.
let cities = try decoder.decode([City].self, from: data)
let dispatchQueue = DispatchQueue(label: "com.example.myApp.bg", qos: .background)
dispatchQueue.async {
let myBackgroundRealm = try! Realm()
for city in cities {
try! myBackgroundRealm.write {
myBackgroundRealm.create(City.self, value: city, update: false)
}
}
}