我正在制作一个应用程序,您需要使用 4 位密码登录,但一次只能有一个密码。我正在尝试将其保存到核心数据中,但每当用户添加新密码时,它只会将其添加到长列表中。我怎样才能限制一个实体只有它自己的一个实例?
这是我的代码,以防万一:
-(BOOL)savePassword:(NSString*)password{
AppDelegate * appDelegate = [[AppDelegate alloc]init];
NSManagedObjectContext * context = [appDelegate managedObjectContext];
AppData * appData = (AppData*)[NSEntityDescription insertNewObjectForEntityForName:@"AppData" inManagedObjectContext:context];
appData.password = password;
NSError *error;
if (![context save:&error]) {
NSLog(@"Whoops, couldn't save: %@", [error localizedDescription]);
}
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"AppData" inManagedObjectContext:context];
[fetchRequest setEntity:entity];
NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];
if (fetchedObjects == nil) {
NSLog(@"There was an error:%@",error);
}
for (AppData * adata in fetchedObjects) {
NSLog(@"Password:%@",adata.password);
}
return YES;
}
谢谢!
最佳答案
此处正确的做法是不要将此数据放入核心数据。如果您只有一个实例,那么使用 Core Data 来解决问题就没有意义了。为此使用核心数据没有任何好处。把它放在别的地方。代码解决方案忽略了重点,因为即使它有效,它也是一个糟糕的设计。
关于ios - 在 Core Data 中只有一个实体实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21077261/