Я пытаюсь передать пары ключ-значение и обновить атрибуты через цикл.
func update(storableClass : NSManagedObject.Type, id: ID, fields: [String : Any]) throws {
// retreive manaagedObject
for (key, value) in fields {
manaagedObject.setValue(value, forKey: key)
}
}
Очевидно, setValue(_:forKey:)
сгенерирует исключение, если ключ не существует.
Из того, что я узнал , вы не должны ловить исключение Objective-C в Swift.
Есть ли какой-нибудь безопасный способ обновить свойства основных данных через словарь?
Я знаю, что могу иметь функцию, подобную приведенной ниже:
func update(storableClass : ManagedObject.Type, id: ID, closure: (ManagedObject) -> ()) throws {}
, а затем вызвать ее кактакие:
update(storableClass: UserEntity.self, id: "123123", closure: { userEntity in
userEntity.name = "new name"
})
Мне нравится иметь оба варианта ... и любой другой безопасный / быстрый вариант ...