ios - Realm - commitWriteTransaction :outError

标签 ios iphone swift realm

我有一个 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/

相关文章:

ios - SWRevealViewController 在解包 Optional 值时意外发现 nil

ios - XCTAssertEqual 用于 Swift 中的自定义对象

ios - "Computed property must have an explicit type"错误 : how to list files in Swift 2. x?

ios - swift 火力基地 : Querying Child Nodes without Parent Key

iOS 9 删除 HealthKit 中的数据

iphone - UITableViewController 最后一行被截断

iphone - 我的 UIView 上已经有渐变,插入新渐变时遇到问题

ios - 查询 Firebase 嵌套数据以检查特定值 - iOS Swift

ios - Apple Wallet 支持 NFC 的通行证用例

iphone - 如何实现模态日期选择器?