gpt4 book ai didi

ios - 核心数据在应用重启之前不会改变

转载 作者:行者123 更新时间:2023-11-28 22:52:30 24 4
gpt4 key购买 nike

我有一个核心数据模型,可以很好地导入和导出数据。我的应用程序的工作方式是从数据库下载一个 JSON 文件,对其进行解析,清除核心数据模型,然后再次添加数据(有效地刷新本地数据模型)。​​

如果我对数据库进行更改,更改会反射(reflect)在 JSON 文件中,但不会反射(reflect)在核心数据模型中,直到我重新启动(也就是结束应用程序,再次打开)应用程序。

我确定这一定与我刷新数据库的方式有关,但我就是无法确定。我在下面包含了一些代码来提供帮助。

我用来清除数据模型的方法:

- (void)resetCoreData;
{
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"AppWithCoreData.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];
}

persistentStoreCoordinator = nil;
managedObjectContext = nil;

[self managedObjectContext]; // Rebuild Object Context
}

我用来将数据添加到数据模型的一行代码:

[model setValue:[dictionary objectForKey:@"eventID"] forKey:@"eventID"];

最佳答案

通常当您需要保存对核心数据存储的更改时,您需要保存它们。

要实现它你需要调用

NSError* error = nil;
[managedObjectContext save:&error];

以这种方式,您所做的更改将保存到磁盘。事实上,例如,当您简单地更改特定实体的属性值时,它仅在内存中可用。

我想这些更改仅在下次重新启动时可用,因为在您的应用程序委托(delegate)中您监听了 applicationWillTerminate 委托(delegate)并在那里保存了上下文。您是否正在使用随 Xcode 模板提供的核心数据堆栈?

如果可能,请提供更多详细信息,也许我可以帮助您。

希望对您有所帮助。

关于ios - 核心数据在应用重启之前不会改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11601537/

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