Ios 检索核心数据数据库中上次保存的属性

Ios 检索核心数据数据库中上次保存的属性,ios,database,Ios,Database,我对核心数据编程一无所知!我正在尝试编写一个应用程序,简言之,如下所示: 用户在一个视图中有很多数据,这些数据是以前做过很多计算的结果。在这个特殊的“所有结果”视图中,有一个用于保存数据以供将来参考的选项,为此,要求用户输入标识符(在文本字段中)并按下保存按钮 要检索保存的数据,用户重新输入标识符并按下加载按钮 几乎所有的工作都很好:数据正在被保存和加载。。。但问题是,当输入标识符并按下加载按钮时,应用程序加载的是第一个保存的数据,而不是最后一个!我希望应用程序在按“加载”按钮时加载上次保存的数

我对核心数据编程一无所知!我正在尝试编写一个应用程序,简言之,如下所示:

用户在一个视图中有很多数据,这些数据是以前做过很多计算的结果。在这个特殊的“所有结果”视图中,有一个用于保存数据以供将来参考的选项,为此,要求用户输入标识符(在文本字段中)并按下保存按钮

要检索保存的数据,用户重新输入标识符并按下加载按钮

几乎所有的工作都很好:数据正在被保存和加载。。。但问题是,当输入标识符并按下加载按钮时,应用程序加载的是第一个保存的数据,而不是最后一个!我希望应用程序在按“加载”按钮时加载上次保存的数据。。。我该怎么做

我很抱歉用这个新手问题打扰你,但这是我第一次尝试处理核心数据,我真的很想知道如何做到这一点!我非常感谢所有能帮助我的人

“加载”按钮的代码如下:

- (IBAction)loadData:(id)sender
{
    [_identificador resignFirstResponder];

    AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];

    NSManagedObjectContext *context = [appDelegate managedObjectContext];

    NSEntityDescription *entityDesc = [NSEntityDescription entityForName:@"English"
                                                  inManagedObjectContext:context];

    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    [request setEntity:entityDesc];

    NSPredicate *pred = [NSPredicate predicateWithFormat:@"(identificador = %@)", _identificador.text];
    [request setPredicate:pred];
    NSManagedObject *matches = nil;

    NSError *error;
    NSArray *objects = [context executeFetchRequest:request
                                              error:&error];

    if ([objects count] == 0)
    {
        _status.text = @"No matches";
    }
    else
    {
        matches = objects[0];
        _dataAtualEng.text = [matches valueForKey:@"dataRCQ"];
        _rcqEng.text = [matches valueForKey:@"rcq"];
        _status.text = [NSString stringWithFormat: @"%lu matches found", (unsigned long)[objects count]];
    }
}

objects数组包含具有谓词中指定的标识符的所有对象

在您正在使用的代码中

matches = objects[0];
这将为您提供第一个保存的对象

相反,你应该使用

matches = objects.lastObject;

但是,您可能希望重新考虑您的实现,因为唯一标识条目的方法是通过其主键(在您的情况下是Identificator),每次保存都应该不同。

非常感谢Vijayts!!!!我想你是对的。。。但在我的应用程序中,我不能强制用户为每次保存输入唯一标识符,我的应用程序是关于身体评估、计算BMI、体脂等的。。。这个“所有结果”视图是向用户显示评估的所有结果,然后用户决定是否保存它。。。你知道,标识符是被评估人的名字。但是,如果用户输入相同的标识符,有没有办法覆盖数据,而不是用相同的标识符保存另一个“实例”?对不起,Vladimir。我不确定有没有这样的方法。如果答案对你的问题有帮助。请务必将其标记为已接受:)