我有一个 UserObject,它有一个“类(class)”属性。我尝试更新“类(class)”,但没有用。
这是我的代码:
if let user = realm.objects(UserObject).filter(predicate).first {
user.course = value
do {
try! realm.write {
realm.add(user, update: true)
}
} catch let error as NSError {
print("Something went wrong: \(error.localizedDescription)")
}
}
当我调试我的代码时,transactionWithBlock 返回 [self commitWriteTransaction:outError]
- (BOOL)transactionWithBlock:(void(^)(void))block error:(NSError **)outError {
[self beginWriteTransaction];
block();
if (_realm->is_in_transaction()) {
return [self commitWriteTransaction:outError];
}
return YES;
你能帮我理解为什么吗?我的代码有问题吗?
最佳答案
一旦一个对象被保存到 Realm,你就不能在写入事务之外修改它的属性。在这种情况下,您查询了一个对象,尝试在写事务之外修改它的属性,然后尝试使用 realm.add(_, update:)
重新插入它,这是多余的,因为只有在处理尚未由 Realm 管理的对象时才需要这样做。
在这种情况下更新 user.course
的正确方法是:
if let user = realm.objects(UserObject).filter(predicate).first {
do {
try! user.realm.write {
user.course = value
}
} catch let error as NSError {
print("Something went wrong: \(error.localizedDescription)")
}
}
关于ios - Realm - commitWriteTransaction :outError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43723838/