私はcoredataに非常に奇妙な問題に直面しています。 私はidsで管理されているアイテムを持っており、単純な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が新しい値に設定されていない、私は古いものを取得します。
私は私のアプリを殺すと、私のオブジェクトはそこにあり、それはうまく動作します。私のヒット数を更新する場合、私は良い値を得る...
私の問題は何らかの形でCoreDataに自分のオブジェクトの最初の挿入に接続されていると思う... キャッシュがありますか?見て?オブジェクトを「無効にする」ために何かする必要がありますか?
本当に素晴らしいことがいくつかあります。