2012-11-30 5 views
0

NSPredicate를 사용하여 코어 데이터 항목의 항목을 편집하려고하는데 어떻게 작동하는지 완전히 모르겠습니다.NSPredicate를 사용하여 코어 데이터 정보 덮어 쓰기

다른 개체의 ID를 기반으로 엔티티를 가져 오려고하지만 잘못된 위치를 볼 수 없습니다. 내 데이터 모델이 실제로 적용됩니다. 엔터티 : myEntity, 특성 : name, id, value.

내가이를 통해 데이터베이스에서 올바른 객체 검색하기 위해 노력하고있어 : 어떤 이유로

NSEntityDescription *entity = [NSEntityDescription entityForName:@"myEntity" inManagedObjectContext:self.managedObjectContext]; 
    NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
    [request setEntity:entity]; 

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"id == %@", self.itemToEdit.ID]; 
    [request setPredicate:predicate]; 

    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES]; 
    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil]; 
    [request setSortDescriptors:sortDescriptors]; 

    NSError *error; 

    MyEntity *myEntity = [[self.managedObjectContext executeFetchRequest:request error:&error] objectAtIndex: 0]; 
    myEntity.value = self.itemToEdit.anotherValue; 

    [self.managedObjectContext save:&error]; 

을, 데이터가 저장되지 않고, 응용 프로그램은 저를지도하는 중 하나는 믿고 충돌하지 않습니다 문제는 술어와 관련이 있습니다. 어쨌든 코드에 어떤 문제가 있습니까? 참고로 itemToEdit은 myEntity 유형이 아니며 다른 객체이지만 할당 유형이 동일합니다.

감사합니다,
마이크

+1

당신의 술어에서 'id'가 정확한 경우인지 확인 했습니까? 'itemToEdit' 객체에는 대문자로 된'ID' 속성이 있습니다. 또한'error' 객체를 검사하여'executeFetchRequest : error :'또는'save :'를 호출 할 때 문제가 있는지 확인하십시오. – colincameron

+0

답장을 보내 주셔서 감사합니다. 오류는 둘 모두에 대해 null입니다. 또한 케이스를 두 번 확인해도 정확합니다. – Mackey18

답변

0

케이스는 남자를 마감했다. 나에 의한 어리석은 실수. 나는 Core Data 작업의이 새로운 부분을 만드는 데 너무 집중했는데 (나는 그다지 힘들다.), 실제로 self.itemToEdit.value를 지정하는 것을 잊었다. 시간을 낭비해서 죄송합니다.

마이크

+0

다행입니다. 할당 전후에 nslogs로 모든 메소드를 다시 타이프했습니다. 당신은 자신의 대답을 정확하게 표시 할 수 있습니다. (여전히 자신의 문제를 디버깅하는 데 도움이 될 수 있습니다). – danh

+0

감사합니다. danh, 시간을 낭비해서 죄송합니다. – Mackey18

관련 문제