2010-12-07 5 views
0

나는 coredata에 매우 이상한 문제가 있습니다. ID가 관리되는 항목이 있고 간단한 NSNumber 인 동적 속성을 업데이트하려고합니다. 내 항목 클래스에, 항상 이렇게 : 나는 일부 데이터를 수신 한 후,CoreData NsManagedObject의 이상한 동작

[NSEntityDescription insertNewObjectForEntityForName:@"item" 
    inManagedObjectContext:[self getManagedObjetContextForCurrentThread]]; 

그럼 내가 안타를 업데이트

- (int) hits{ 
    return [self.hitNS intValue]; 
} 

- (void) setHits:(int)h{ 
    self.hitNS=[NSNumber numberWithInt:h]; 
} 

기본적으로, 나는이 방법으로 내 관리, 객체를 생성 섬기는 사람. CoreData는 항목을 업데이트 하더군요,하지만 난 다시 항목에 액세스 할 때 :

-(NSArray *) getStoredEntities:(NSString*)entity withPredicate:(NSPredicate*)predicate 
{  
    NSManagedObjectContext *moc=[self getManagedObjetContextForCurrentThread]; 
    NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
    [request setEntity:[NSEntityDescription entityForName:entity 
     inManagedObjectContext:moc]]; 
    if (predicate) 
     [request setPredicate:predicate]; 
    NSError *error = nil; 
    NSArray *fetchResults = [moc executeFetchRequest:request error:&error]; 
    [request release]; 
    return [fetchResults objectAtIndex:0]; 
} 

Item *i=(Item*)[self getStoredEntity:@"Item" 
    withPredicate:[NSPredicate predicateWithFormat:@"(id==%@)", itemId]]; 

내 속성 item.hits이 새로운 값으로 설정되지 않습니다, 나는 이전을 얻는다.

나는 내 견해를 몰고있다. 내 앱을 죽이고 다시 시작하면 내 물건이 있고 잘 돌아 간다. y는 내 히트 카운트 업데이트하면, 나는 은 아니에요 캐시 있습니까 ... ...

그래서 나는 내 문제는 CoreData 내 객체의 첫 번째 삽입에 연결된 어떤 방법으로 생각 좋은 가치를 얻을 봄? 내 물건을 "무효화"하려면 뭔가해야합니까?

정말 도움이 될만한 도움이 될 것입니다.

답변

0

즉, get/set 관리 컨텍스트가 동기화되지 않습니다.

컨텍스트를 저장 한 후에 NSManagedObjectContextDidSaveNotification이 전송되고 이러한 변경 작업에 관심이있는 다른 모든 컨텍스트에서는이 알림을 관찰 한 다음 mergeChangesFromContextDidSaveNotification을 사용하여 동기화해야합니다.