Я пытаюсь использовать библиотеку Realm для сохранения данных в моем приложении. Тем не менее, я продолжаю сталкиваться с тем же кодом ошибки: «Доступ к области из неправильного потока». Я попытался решить эту проблему, создав Очередь отправки, специфичную для Realm, и поместив в нее все вызовы Realm.
Вот как сейчас выглядит мой класс RealmManager:
import Foundation
import RealmSwift
class RealmManager {
fileprivate static let Instance : RealmManager = RealmManager()
fileprivate var _realmDB : Realm!
fileprivate var _realmQueue : DispatchQueue!
class func RealmQueue() -> DispatchQueue {
return Instance._realmQueue
}
class func Setup() {
Instance._realmQueue = DispatchQueue(label: "realm")
Instance._realmQueue.async {
do {
Instance._realmDB = try Realm()
} catch {
print("Error connecting to Realm DB")
}
}
}
class func saveObjectArray(_ objects: [Object]) {
Instance._realmQueue.async {
do {
try Instance._realmDB.write {
for obj in objects {
Instance._realmDB.add(obj, update: .all)
}
}
} catch {
print("Error Saving Objects")
}
}
}
class func fetch(_ type: Int) -> [Object] {
if let realm = Instance._realmDB {
let results = realm.objects(Squeak.self).filter("type = \(type)")
var returnArray : [Object] = []
for r in results {
returnArray.append(r)
}
return returnArray
}
return []
}
Я вызываю Setup () внутри didFinishLaunchingWithOptions для создания очереди Realm и экземпляра Realb Db.
Я получаю код ошибки внутри saveObjectArray по адресу:
try Instance._realmDB.write { }
Это кажетсяпросто из-за моего непонимания требований потоков в Realm. Я был бы признателен за любое понимание этого вопроса или направление отсюда.