在 ios 框架项目中存储本地数据的最佳实践
Posted
技术标签:
【中文标题】在 ios 框架项目中存储本地数据的最佳实践【英文标题】:Best Practice to store local data in ios framework project 【发布时间】:2020-02-01 12:50:59 【问题描述】:我正在开发一个供开发人员使用的自定义框架。我正在我的框架内本地保存一些数据,我正在考虑使用 UserDefaults 但我想知道:
-
这是最好的方法吗?
如果应用程序 UserDefaults 被清除,那么它是否也会清除我的框架数据?
我想知道如何在 ios 框架中存储本地数据。什么是最好的解决方案? 我对此感到困惑,有人可以帮忙吗?
【问题讨论】:
您只是宿主应用程序正在使用的代码。您没有“单独的”存储或沙箱。 【参考方案1】:这取决于您要存储的数据。
如果您的目标是为您的框架保留一些设置(例如,是否应该启用某些功能),那么 UserDefaults 就可以了。 如果你想存储用户的数据(或任何你可以从服务器获取的数据),那么你应该考虑使用 CoreData,它是一个原生的 iOS/macOS/tvOS 持久存储。
您也可以使用 Realm 数据库,但在框架中使用它不是一个好主意,因为它将被添加到任何将使用您的框架的应用程序中(并且开发人员可能不会对此感到高兴)。
关于你的问题:
-
视情况而定,见上文
是的
【讨论】:
感谢@yury 的反馈。投反对票的人可以解释投反对票的原因吗? 我想存储一些框架设置取决于用户类型。但是,当应用程序用户清除所有 UserDefault 时,UserDefault 是否会被删除,例如大多数开发人员在注销时清除该功能? @Abhinshek 好吧,我认为在注销时清除此类首选项是一件好事,因为您不希望将登录的用户使用以前用户的首选项使用您的框架。因此,应用程序有责任在每次登录后设置您的框架。他们还可以考虑删除 UserDefaults/清除缓存/无论何时其他用户登录(而不是在用户点击 LogOut 按钮之后)。【参考方案2】:Userdefaults 很棒,但如果您有很多需要存储的信息,它有时会变得一团糟。特别是您需要在整个应用程序中管理键/值关系,并且通常键最终超过 10 多个 ..
只是一个建议,但为什么不使用 CoreData 来管理模型并将数据存储在设备上的 sqlite db 中。加载框架后,您可以检查数据是否存在,如果不存在则获取它。
我建议使用苹果本地提供的功能,而不是使用像 Realm 这样的 3rd 方解决方案,对于 3rd 方,您需要升级到最新版本才能正常工作。
请阅读这些内容以消除任何混淆。 https://cocoacasts.com/what-is-the-difference-between-core-data-and-sqlite/
Coredata 使用教程: https://www.raywenderlich.com/7569-getting-started-with-core-data-tutorial
【讨论】:
以上是关于在 ios 框架项目中存储本地数据的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章