我正在開發一個應用程序,該應用程序解析XML Ant將數據放入CoreData。我希望它能夠快速啓動,因此我首先從CoreData加載數據,然後在其他線程中加載和解析XML。問題是,當應用程序啓動第一次CoreData是空的,我開始解析:ExecuteFetchRequest如果第一次CoreData爲空
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"SlideItem" inManagedObjectContext:managedObjectContext];
[request setEntity:entity];
// Execute the fetch -- create a mutable copy of the result.
NSError *error = nil;
NSMutableArray *mutableFetchResults = [[managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
if (mutableFetchResults == nil)
{
// Handle the error.
NSLog(@"mutableFetchResults == nil");
}
NSLog(@"mutableFetchResults count = %d", [mutableFetchResults count]);
if ([mutableFetchResults count] == 0) // if DB is empty
{
[self loadAndParse]; // here I do it in the main thread
//so my CoreData is filled with data here
}
//but if try to execute my request again like this:
mutableFetchResults = [[managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
//it is empty again
我該怎麼辦呢?謝謝
謝謝,我該怎麼辦?我是新來的Objective-C所以需要清楚, 我試過 [NSManagedObjectContext refreshObject:managedObjectContext mergeChanges:YES]; 但它不起作用( – Burjua 2010-07-21 17:24:27
和順便說一句,這是相同的線程)) – Burjua 2010-07-21 17:28:06
'refreshObject:'是從進行更改的上下文中調用的。你不通過上下文,你通過改變的對象。在爲上下文B中的ContextDidSave通知註冊上下文A後,會調用mergeChanges。 – TechZen 2010-07-22 01:09:34