В моем приложении мне нужен глобальный доступ к currentUser
, который является экземпляром класса User
, определенного следующим образом:
class User: Object{
@objc dynamic var recordName = UUID().uuidString
@objc dynamic var name = ""
@objc dynamic var email = ""
@objc dynamic var photo: Data? = nil
override static func primaryKey() -> String? {
return "recordName"
}
}
currentUser
устанавливается при запуске приложенияи я часто упоминаю об этом почти везде в моем приложении.
Я заметил, что время от времени я получаю сообщение об ошибке, которое, по-видимому, вызывается ссылкой на этот currentUser
в разных местах:
Доступ к области из неверного потока
Я могу отслеживать, в каком потоке находится область большую часть времени, но трудно охватить все случаи.Так что это подводит меня к моему вопросу.
Есть ли безопасный способ установить объект currentUser
один раз в качестве одиночного?Или я должен сохранить их ID на диск и затем извлекать объект из Realm каждый раз, когда мне это нужно (что-то вроде ниже)?
let realm = try! Realm()
if let currentUserId = defaults.string(forKey: "currentUserId"), let user = realm.object(ofType: User.self, forPrimaryKey: currentUserId){
currentUser = user
}
Я использую Swift 4.2 на Xcode 10. Спасибо!