Core Data 中只有一个实体实例

Sam*_*les 0 core-data objective-c nsmanagedobject ios

我正在制作一个应用程序,您需要使用 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;
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

Tom*_*ton 5

正确的做法是不要将这些数据放在 Core Data 中。如果你只有一个实例,那么使用 Core Data 来解决问题是没有意义的。为此使用 Core Data 没有任何好处。把它放在别的地方。代码解决方案没有抓住重点,因为即使它有效,它也是一个糟糕的设计。