iOS核心数据:获取的对象多于保存的对象
我不熟悉核心数据,我正试图用它来拯救用户。但是,当我第一次创建用户时,它会插入用户。这似乎很顺利。它只被调用一次iOS核心数据:获取的对象多于保存的对象,ios,objective-c,core-data,Ios,Objective C,Core Data,我不熟悉核心数据,我正试图用它来拯救用户。但是,当我第一次创建用户时,它会插入用户。这似乎很顺利。它只被调用一次 -(void)insertUser: (User *) user{ [self userToModel:user]; NSError *error = nil; if(![context save:&error]){ NSLog(@"Unable to save managed object context"); } } -(
-(void)insertUser: (User *) user{
[self userToModel:user];
NSError *error = nil;
if(![context save:&error]){
NSLog(@"Unable to save managed object context");
}
}
-(UserModel *)userToModel:(User *) user{
UserModel *usermodel = [NSEntityDescription
insertNewObjectForEntityForName:@"UserModel"
inManagedObjectContext:context];
[usermodel setValue:user.username forKey:@"username"];
[usermodel setValue:user.password forKey:@"password"];
[usermodel setValue:user.sessionid forKey:@"sessionid"];
[usermodel setValue:[NSNumber numberWithBool:TRUE] forKey:@"selected"];
[usermodel setValue:[NSNumber numberWithBool:user.beta] forKey:@"beta"];
return usermodel;
}
接下来,我获取用户,它返回3个用户:2个完全相似的用户和一个nil模型
-(NSMutableArray *)getUsers{
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"UserModel"
inManagedObjectContext:context];
NSError *error;
[fetchRequest setEntity:entity];
NSArray *usermodels= [context executeFetchRequest:fetchRequest error:&error];
NSMutableArray *users = [[NSMutableArray alloc] init];
for(UserModel *userModel in usermodels){
User *user = [self userModelToUser:userModel];
[users addObject:user];
}
return users;
}
UserModelToUser:
-(User *)userModelToUser:(UserModel *)usermodel{
User *user = [[User alloc]initWithUsername:usermodel.username
Password:usermodel.password
CSRFToken:usermodel.csrftoken
sessionid:usermodel.sessionid
Beta:[usermodel.beta boolValue]
Selected:[usermodel.selected boolValue]];
return user;
}
选择用户
-(void)selectUser: (User *)userToSelect OldUser:(User *)oldSelectedUser{
UserModel *oldSelectedUserModel = [self userToModel:oldSelectedUser];
UserModel *newSelectedUsermodel = [self userToModel:userToSelect];
[oldSelectedUserModel setValue:[NSNumber numberWithBool:FALSE] forKey:@"selected"];
[newSelectedUsermodel setValue:[NSNumber numberWithBool:TRUE] forKey:@"selected"];
NSError *saveError;
if (![context save:&saveError]) {
NSLog(@"Changing users failed %@", saveError);
}
}
我已经尝试重新安装该应用程序,以确保没有旧用户仍然保存或任何东西。有人能帮我吗?设置一个断点或向userToModel添加一个NSLog-验证它只被调用一次。这个方法是你调用InsertNewObjectForEntityForName的唯一地方吗?我已经这样做了,是的。你在userModelToUser中做什么?我将我的用户对象转换为数据库用户模型你能显示代码吗?如果userToModel只被调用一次,那么问题不在这里显示的代码中