簡體   English   中英

iOS 5-Coredata Sqlite DB終止應用程序后丟失數據

[英]iOS 5 - Coredata Sqlite DB losing data after killing app

我將coredata與sqlite DB結合使用以將數據持久保存在我的應用程序中。 但是,每次我殺死我的應用程序時,我都會丟失保存在數據庫中的所有數據。 我非常確定,因為每次我的應用啟動時,數據庫的.sqlite文件都會被替換為一個新的.sqlite文件,但是我似乎找不到任何將使用現有代碼的代碼。 如果有人可以將我引向可以為我處理這些代碼的代碼,那就太好了。

干杯

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
if (__persistentStoreCoordinator != nil)
{
    return __persistentStoreCoordinator;
}

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber     numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];    
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"FlickrCoreData.sqlite"];

NSError *error = nil;
__persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
if (![__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error])
{
    NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
    abort();
}    

return __persistentStoreCoordinator;
}

出於優化目的進行更改時,不會保存對核心數據中的管理對象上下文所做的更改。 這樣,您可以對上下文進行大量更改,然后立即保留所有更改。 因此,如果您在有機會自動保存之前殺死了您的應用程序,則將丟失所有數據。 我猜這就是您在這里遇到的事情。

無論如何,請在關閉應用程序之前嘗試顯式調用保存數據。 這應該可以解決您的問題。

例如,假設您有一個保存托管對象上下文的變量稱為context ,則可以通過在關閉應用程序之前在代碼中的某個位置進行以下調用來保存上下文:

[context save:&error]或只是[context save:nil]

您是否嘗試將[self saveContext]放置在[self saveContext]函數applicationWillTerminate: 您應該在終止應用程序之前保存上下文。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM