У меня проблема с повторной выдачей ошибки Realm из закрытия действия (которое выбрасывает) в космическое пространство, где я хочу перехватить и обработать эти ошибки как результаты ошибки.
Вот пример использования кода
let result = withRealm("insert") { realm -> Entity in
var object = RealmObject()
self.encode(entity: e, into: &object)
try realm.write {
realm.add(object, update: .error)
}
return self.decode(object: object)
}
, а вот протокол с реализацией REALM, где действие должно быть albo для выброса
public protocol IRealmStorage {
//associatedtype Entity
func withRealm<Entity>(_ operation: String, action: (Realm) throws -> Entity) -> Result<Entity, Error>
}
public extension IRealmStorage {
func withRealm<Entity>(_ operation: String, action: (Realm) throws -> Entity) -> Result<Entity, Error> {
do {
let realm = try Realm()
let entity = try action(realm)
return .success(entity)
} catch let err {
print("Failed realm \(operation) with error: \(err)")
return .failure(err)
}
}
}
Но я не понимаю, зачем пытатьсяrealm.write () выдает ошибку, и она не перехватывается и не перебрасывается в космическое пространство, которое будет отслеживаться с помощью блока do-try-catch.