ios - 在 Core Data 中只有一个实体实例

标签 ios objective-c core-data nsmanagedobject

我正在制作一个应用程序,您需要使用 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/

相关文章:

ios - 快速匹配针头和大海捞针的最佳方法

iphone - 应用程序关闭时崩溃

ios - 通过 View 传递数据 Xcode 4.2 Storyboard

objective-c - Cocoa:如何在拖动时变形拖动图像

ios - 删除 NSManagedObjectContext

iphone - 如何正确保存到 coredata 一对多关系

ios - Facebook 登录 : -canopenurl issue with facebook sdk?

ios - Plist 值被替换而不是添加

ios - UIDocumentInteractionController 不工作

objective-c - Objective-C 的 Web API 介绍?