2010-12-07 65 views
0

我正面臨着coredata一個非常奇怪的問題。 我有一個項目與IDS管理,我想更新一個簡單的NSNumber動態屬性。我這樣做,因爲總是在我的物品類別:CoreData的奇怪行爲NsManagedObject

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

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

基本上,我創造我的管理,對象與此方法:

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

然後更新我的點擊率,我從收到了一些數據後服務器。 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進行同步。