2014-06-15 4 views
0

저는 핵심 데이터 프로그래밍이 완전히 새롭습니다! 간단히 말해 다음과 같은 앱을 작성하려고합니다.코어 데이터 데이터베이스에서 마지막으로 저장된 속성을 검색합니다.

사용자가보기에 많은 데이터를 가지고 있는데,이 데이터는 이전에 수행 한 많은 계산 결과입니다. 이 특별한 "모든 결과"보기에는 나중에 참조 할 수 있도록 데이터를 저장하는 옵션이 있습니다. 이렇게하려면 사용자가 텍스트 필드에 식별자를 입력하고 저장 버튼을 누르라는 메시지가 표시됩니다.

저장된 데이터를 검색하려면 사용자가 식별자를 다시 입력하고로드 버튼을 누릅니다.

거의 모든 것이 잘 작동합니다 : 데이터가 저장되고로드 중입니다 ...하지만 문제는 식별자를 입력하고 LOAD 버튼을 누르면 앱이 마지막으로 저장된 데이터가 아닌 처음 저장된 데이터를로드한다는 것입니다. 로드 버튼을 누를 때 마지막으로 저장된 데이터를로드하는 앱을 원한다면 어떻게 할 수 있습니까?

이 초보자 질문에 불편을 끼쳐 드려 죄송합니다.하지만 핵심 데이터를 다루려고하는 것은 이번이 처음인데, 어떻게 해야할지 정말 알고 싶습니다. 나는 저를 도울 수있는 모두를 아주 많이 감사합니다!

은 "LOAD"버튼에 대한 코드는 이것이다 :

- (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]]; 
    } 
} 

답변

1

객체 배열을 사용하면 조건에 지정한 식별자를 가진 모든 개체를 포함합니다. 코드에서

당신은 당신이 처음 저장된 객체를주고있다

matches = objects[0]; 

을 사용하고 있습니다. 대신

고유하게 항목을 식별하는 방법으로 구현이 달라야합니다 기본 키 (귀하의 경우 identificador) 통해 다시 생각 할 수 있습니다 그러나 당신이

matches = objects.lastObject; 

를 사용한다 각 저장합니다.

+0

Vijayts 대단히 감사합니다 !!!! 그리고 내 생각 엔 네가 맞다고 생각해.하지만 내 앱에서는 사용자가 각 저장에 대한 고유 한 식별자를 입력하도록 강요 할 수는 없다. 내 앱은 신체적 평가, 체질량 지수, 체지방 계산 등이다. 결과 "보기는 평가의 모든 결과가 사용자에게 표시되는 곳이며, 저장 여부를 결정합니다 ... 알다시피, 식별자는 평가 대상자의 이름입니다. 그러나 동일한 식별자로 다른 "인스턴스"를 저장하는 대신 사용자가 동일한 식별자를 입력하면 데이터를 덮어 쓸 수 있습니까? – Vladimir

+0

죄송합니다 블라디미르입니다. 나는 그런 방법을 모른다. 또한 그 대답이 귀하의 문제에 도움이된다면. 친절하게 허용 표시로 :) –

관련 문제