2012-06-27 5 views
0

여기에 특정 속성을 편집하여 sqlite DB에 저장하는 코드가 있지만 DB에 변경 사항을 저장할 수 없습니다.핵심 데이터의 속성 편집

-(void)changeMemberKey 
{ 
    NSEntityDescription *entityDesc=[NSEntityDescription entityForName:@"Table1" inManagedObjectContext:context]; 
    NSFetchRequest *request=[[NSFetchRequest alloc] init]; 
    NSPredicate *predicate=[NSPredicate predicateWithFormat:@"(member_id=Null)"]; 
    [request setPredicate:predicate]; 
    [request setEntity:entityDesc]; 
    Table1 *matches; 
    NSError *error; 

    NSArray *objects=[context executeFetchRequest:request error:&error]; 
    NSLog(@"Object count===%d",[objects count]); 
    for(int i=0;i<[objects count];i++) 
    { 
    matches=[objects objectAtIndex:i]; 
    Table1 *data=(Table1 *)matches; 
    NSLog(@"Data before===%@",data); 
    [data setValue:memberKey forKey:@"member_id"]; 
    [context save:&error]; 
    NSLog(@"Data after====%@",data); 
    data=nil; 
    } 

    entityDesc=nil; 
    request=nil; 
    matches=nil; 
    error=nil; 
    objects=nil; 
} 
+0

NSLog (@ "데이터를 저장할 수 없습니다! 오류 : % @", [오류 설명]);'(context save : & error; . 그런 다음 당신이 성공했는지 여부를 볼 수 있습니다. 그렇지 않은 경우 질문을 편집하여 로그를 추가하십시오. – Kjuly

+0

실제로 'for' 루프 다음에 데이터를 저장할 수 있습니다. :) – Kjuly

+0

제안 해 주셔서 감사합니다. NSLog (@ "데이터를 저장할 수 없습니다! 오류 : % @", [오류 설명]); 하지만 오류가 없으면 컨텍스트가 저장되지만 데이터베이스에 반영되지 않습니다. – Mary

답변

0

시도는 시도를 타고

for(Table1 * data in objects) 
    data.member_id = memberKey; 

if (! [context save:&error]) 
    NSLog(@"Couldn't save data! Error:%@", [error description]); 

작동 여부 것입니다 여부를 확실하지에 for 루프를 교체합니다. 어쨌든, 그것은 더 깨끗합니다.

관련 문제