我宣布电子邮件是Realm模型中的主键。
+ (NSString *)primaryKey
{
return @"email";
}
- (void)insertUserWithFirstName:(NSString*)firstname lastName: (NSString*)lastname email:(NSString*)email address:(NSString*)address gender:(NSString*)gender mobile:(NSString*)mobile department:(NSString*)department
{
RLMRealm *realm = [RLMRealm defaultRealm];
[realm beginWriteTransaction];
Employee *employeeInfo = [[Employee alloc]init];
employeeInfo.firstName = firstname;
employeeInfo.lastName = lastname;
employeeInfo.email = email;
employeeInfo.address = address;
employeeInfo.gender = gender;
employeeInfo.mobile = mobile;
employeeInfo.department = department;
[realm addObject:employeeInfo];
[realm commitWriteTransaction];
}
输入重复的电子邮件应用程序后崩溃。
由于未捕获的异常'RLMException'而终止应用程序,原因:'无法将主键属性'email'设置为现有值。
如何在Realm中使用主键?
如何防止这种崩溃?
请帮我。
使用try ... catch处理异常
RLMRealm *realm = [RLMRealm defaultRealm];
@try {
[realm beginWriteTransaction];
Employee *employeeInfo = [[Employee alloc]init];
employeeInfo.firstName = firstname;
employeeInfo.lastName = lastname;
employeeInfo.email = email;
employeeInfo.address = address;
employeeInfo.gender = gender;
employeeInfo.mobile = mobile;
employeeInfo.department = department;
[realm addObject:employeeInfo]; // [realm addOrUpdateObject:employeeInfo];
[realm commitWriteTransaction];
}
@catch (NSException *exception) {
NSLog(@"exception");
if ([realm inWriteTransaction]) {
[realm cancelWriteTransaction];
}
}
正如@Konstantin所建议的那样,您还可以使用[realm addOrUpdateObject:employeeInfo];
主键更新数据...
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句