Хорошо, видно просто так это не закончится. Любите примеры? До этого была задана дефолтная конфигурация Реалм для работы с сервером:
func setup() {
SyncUser.logIn(with: credencial, server: authServerURL) { user, error in
if let user = user {
Realm.Configuration.defaultConfiguration = Realm.Configuration( syncConfiguration: SyncConfiguration(user: user, realmURL: realmURL) )
}
}
}
Как известно, реалм имеет свою ивент-систему, умеющую динамично менять способ работы в данными, обновляемыми в реальном времени. Сервер/локальное хранилище.
func connect(block: @escaping (_ realm: Realm)->()) {
let realm = try! Realm()
block(realm)
}
Также есть метод, который облегчает работу с множеством сущностей и позволяет не писать слишком громоздкий код при выборке:
static func objects<T: Object>(type: T.Type) -> Results<T>? {
let realm = try? Realm()
return realm?.objects(type)
}
Исходя из перечисленного, стало возможно помимо выборки данных, работать с Реалм таким способом и не париться как Реалм синхронизирует данные:
@objc func update(updateBlock: @escaping () -> ()) {
RealmManager.manager.connect { realm in
try! realm.write(updateBlock)
}
}
То есть, в данном контексте обновление объекта происходит так:
let realmEntity = ......
realmEntity.update {
realmEntity.propertyName = ....
}
Если на ревью я увижу здесь Ваш [unowned self], то вы язык учить все же пойдете! И не важно какой у меня по счету язык. Еще раз блеснете пафосом вроде:
Или:
Я лично спущу Вас с небес на землю. А то вы под ногами уже и земли не чувствуете!