我正在尝试检索所有已保存的用户 (RLMObject) 对象。然后我检查是否有任何对象保存。如果不是,我创建一个新的用户对象并尝试保存它。
RLMArray *allUsers = [User allObjects];
if (allUsers.count == 0) {
RLMRealm *realm = [RLMRealm defaultRealm];
[realm beginWriteTransaction];
User *newUser = [[User alloc]init];
newUser.userID = [userDict[@"id"] integerValue];
newUser.role = userDict[@"role"];
newUser.email = userDict[@"email"];
newUser.given_name = userDict[@"profile"][@"given_name"];
newUser.family_name = userDict[@"profile"][@"family_name"];
[realm addObject:newUser];
[realm commitWriteTransaction];
}
但是,这会崩溃并显示以下消息:'RLMException',原因:'尝试在写入事务之外修改对象 - 首先在 RLMRealm 实例上调用 beginWriteTransaction。'
我真的不知道为什么。我正在修改默认 Realm 的写入事务中的对象。
提前致谢!
您必须为每个线程调用一次 RLMRealm defaultRealm,以获得不同的 RLMRealm 实例(相同的文件路径,但不同的变量)。这使我们能够为您轻松整理所有线程安全。见 http://realm.io/docs/cocoa/0.84.0/#using-a-realm-across-threads了解详情。
关于ios - 尝试在写事务之外修改对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25638252/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |