gpt4 book ai didi

iphone - iOS 5 - Coredata Sqlite DB 在杀死应用程序后丢失数据

转载 作者:行者123 更新时间:2023-11-28 19:19:55 25 4
gpt4 key购买 nike

我将 coredata 与 sqlite 数据库结合使用以将数据保存在我的应用程序中。但是,每次我终止我的应用程序时,我都会丢失保存在数据库中的所有数据。我很确定这是因为每次我的应用程序启动时,我的数据库的 .sqlite 文件都会被一个新的文件替换,但我似乎找不到任何只使用现有文件的代码。如果有人能指出一些可以为我处理这个问题的代码,那就太好了。

干杯

B

- (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]

关于iphone - iOS 5 - Coredata Sqlite DB 在杀死应用程序后丢失数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9760747/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com