gpt4 book ai didi

ios - 在 iOS8 中的 App 和 Extension 之间共享核心数据堆栈和数据

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:53:13 25 4
gpt4 key购买 nike

我创建了一个框架来在应用程序和扩展程序之间共享我的数据对象。这包括数据模型和带有我的 Core Data 数据库的 sqlite 文件。

我担心如果 App 和 Extension 都尝试访问这个共享的 sqlite 数据库可能会发生什么。

如果应用程序在扩展程序使用它时在后台对数据库进行一些更改,会出现什么问题?

在这种情况下,最佳做法是什么?

最佳答案

正如@CL 指出的那样,SQLite 对此没有问题。但是你没有直接使用 SQLite,所以你可能需要做一些核心数据级别的工作来保持一致性。使用 iOS 应用程序和扩展程序,您有两个可以更改数据的独立进程。您的代码需要考虑到这一点。

如果您的应用扩展仅显示数据(例如,“今天”扩展仅显示在应用中创建的数据),您可能不需要做任何特殊的事情。如果您的应用程序在后台运行并在扩展程序可见时创建新数据,则扩展程序的数据可能会稍微过时。如果这很重要,您可以刷新它。但如今,扩展通常不会在很长时间内可见,因此可能不值得。在这种情况下,我会在设置扩展的核心数据堆栈时使用 NSReadOnlyPersistentStoreOption,只是为了明确意图并防止无意的更改。

如果您的应用扩展创建新数据或修改现有数据,您的应用需要意识到这一点并做出适当响应。您要进行哪些更改取决于扩展程序处理共享数据的准确程度。对于修改后的数据,您的应用可能需要在任何内存中托管对象上调用 refreshObject:mergeChanges:,并将 NO 作为第二个参数。它还可能需要重做任何更改可能影响搜索谓词的提取。这将确保您获得最新的更新。对于新数据,您需要重新获取应用程序正在使用的任何数据以获取新的添加/删除。检查的好时机是应用程序何时进入前台(即何时发布 UIApplicationWillEnterForegroundNotification)。

关于ios - 在 iOS8 中的 App 和 Extension 之间共享核心数据堆栈和数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26979719/

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