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 文件并检查了 finder 中的更改,结果始终相同,直到我退出应用程序。重新启动后,获取结果是最新的并与 app.storedata 文件对齐。fooArray 计数始终相同,无论我是否在实体中添加了一些条目并且 coredata 保存所有内容。我试过 [fetchRequest setIncludesPendingChanges:YES] 但它不会影响行为。如何在应用程序运行时更新获取结果?

更新:我已经“解决”了这个解决方法的问题:

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

这种解决方法是最终解决方案吗?有没有更“正确”的方法来解决这个问题?

4

0 回答 0