0

これは私のコードですAppDelegate.m

-(IBAction)fetch:(id)sender{
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Foo" inManagedObjectContext:[self managedObjectContext]];
[fetchRequest setEntity:entity];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"title == 'some title'"];
[fetchRequest setPredicate:predicate];
NSError *error = nil;
NSArray *fetchedObjects = [[self managedObjectContext] executeFetchRequest:fetchRequest error:&error];
if (fetchedObjects == nil) {NSLog(@"Error: %@", error);}
NSMutableArray *fooArray = [[NSMutableArray alloc]init];
for (Foo *f in fetchedObjects) {
    //here another fastenum for a to-many relationship
    for(Bar *b in f.relationship){
        [fooArray addObject:b.title];
    }
}

fetch アクションを実行するたびに、UI を介して app.storedata ファイルを変更し、ファインダーで変更を確認しても、結果はアプリケーションを終了するまで常に同じです。再起動後、フェッチ結果は最新で、app.storedata ファイルと一致します。エンティティにいくつかのエントリを追加し、コアデータがすべてを保存しても、fooArray の数は常に同じです。[fetchRequest setIncludesPendingChanges:YES] を試してみましたが、動作には影響しません。アプリの実行中にフェッチ結果を更新する方法は?

更新: この回避策で問題を「解決」しました:

-(IBACTION)fetch:(id)sender{
    _managedObjectContext = nil;
    _persistenStoreCoordinator = nil;
    //rest of the code...

この回避策は最終的な解決策ですか? この問題を解決するためのより「正しい」方法はありますか?

4

0 に答える 0