2012-03-26 49 views
1

好的,所以我的應用程序委託創建了所有核心數據的東西,併發送給我的第一個視圖控制器。嘎!嘗試重置核心數據。每兩秒鐘工作一次?

我的第一個視圖控制器是一個NSURLConnectionDelegate ...在connectionDidFinishLoading方法中,我想擦除persistentStore並重新創建它...然後從XML文件中解析/重新填充它。

這裏是我的connectionDidFinishLoading代碼:

-(void)connectionDidFinishLoading:(NSURLConnection *)connection { 

//I believe I should nil out the context... 
managedObjectContext = nil; 

//Erase the persistent store from coordinator and also file manager. 
NSError *error = nil; 
NSPersistentStore *store = [self.persistentStoreCoordinator.persistentStores lastObject]; 
NSURL *storeURL = store.URL; 
[persistentStoreCoordinator removePersistentStore:store error:&error]; 
[[NSFileManager defaultManager] removeItemAtURL:storeURL error:&error]; 


//Make new persistent store and add to the coordinator 
if (![self.persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) { 
} 
else { 
    //Store is readied, now recreate the managedObjectContext 
    id appDelegate = (id)[[UIApplication sharedApplication] delegate]; 
managedObjectContext = [appDelegate managedObjectContext]; 

    //Call the parser! 
    [self parseXML]; 
} 
} 

我知道有什麼錯在這裏...只是想不出什麼。它每隔一次我生成/運行。當我嘗試在我的解析器方法中保存managedObjectContext時出現錯誤

任何人都可以提供關於如何修復此問題的示例代碼?

由於提前,

+0

你」爲協調器和文件管理器重傳'&error' - 你回來了什麼錯誤 - NSLog(「%@」,error);'每次調用之後;') – deanWombourne 2012-03-26 16:18:06

+0

這些錯誤都沒有得到......錯誤出現在[parseXML]方法中。但我知道它與這個粘貼的代碼有關...如果我拿出所有的持久性存儲刪除位,只是[parseXML]它的工作 – sayguh 2012-03-26 17:17:59

+0

我得到的錯誤是「if(![managedObjectContext save:&error])」並且是啊...只有在我每次運行應用程序時纔會出現錯誤。錯誤是「EXC_BAD_ACCESS」 – sayguh 2012-03-26 19:44:39

回答

1

我能得到這個工作

(在我的視圖控制器)

-(void)connectionDidFinishLoading:(NSURLConnection *)connection { 

id appDelegate = [[UIApplication sharedApplication] delegate]; 
[appDelegate resetCoreData]; 

self.managedObjectContext = [appDelegate managedObjectContext]; 
[self parseXML]; 
} 

(在我的應用程序委託)

- (void)resetCoreData; 
{ 

NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"deleteme.sqlite"]; 

NSFileManager *fileManager = [NSFileManager defaultManager]; 


    [fileManager removeItemAtURL:storeURL error:NULL]; 

    NSError* error = nil; 

    if([fileManager fileExistsAtPath:[NSString stringWithContentsOfURL:storeURL encoding:NSASCIIStringEncoding error:&error]]) 
    { 
     [fileManager removeItemAtURL:storeURL error:nil]; 
    } 

self.managedObjectContext = nil; 
self.persistentStoreCoordinator = nil; 

}