iphone - 将核心数据用于 iPhone 应用程序有什么值(value)吗?

标签 iphone objective-c ios core-data

人们可以举例说明为什么他们会在应用程序中使用 coreData 吗?

我问这个是因为大多数应用程序只是中央服务器的客户端,其中某种 API 可以为您提供所需的信息。

在我的例子中,我正在为一个具有 API 的网络应用程序编写一个时间表应用程序,我正在讨论在核心数据 (Sqlite) 中复制我的服务器上的数据结构是否有任何值(value)

例如

项目有很多时间表 员工有很多时间表

在我看来,我可以在每次调用项目列表或现有时间表时连接到 API。

我意识到对于某种离线模式,您可以在本地存储核心数据,但这会产生更多问题,因为您现在在再次连接时将数据同步回网络服务器时遇到了很大的问题......例如为时间表选择的项目不再存在。

任何有经验的开发人员能否阐明核心数据何时是最佳实践方法的经验?

编辑

我当然意识到存储本地持久性是有值(value)的,但用户默认值的关键值似乎涵盖了我能想到的大多数应用程序。

最佳答案

您不应将 CoreData 简单地视为 SQLite 数据库。它不仅仅是一个 SQLite 数据库。当然,SQLite 是一个选项,但还有其他选项,例如内存中,以及从 iOS5 开始的大量自定义数据存储。显然,CoreData 的最大好处是持久性。但是,即使您使用的是内存数据存储,您也可以获得结构良好的对象图的好处,并且所有关于从数据存储中提取信息或将信息放入数据存储的繁重工作都由 CoreData 处理您,而不必担心支持该数据存储的内容。当然,今天您不太关心持久性,因此您可以使用内存中的数据存储。如果明天、一个月或一年后,您决定添加一项真正受益于持久性的功能,会发生什么情况?使用 CoreData,您只需更改或添加一个持久性数据存储,而您获取或输入信息的所有方法都保持不变。与您尝试直接访问 SQLite 或其他一些数据存储相比,这种添加的开销是最小的。恕我直言,这是最大的好处:抽象。而且,从本质上讲,抽象是 OOP 背后最强大的东西之一。诚然,仅仅为内存存储构建数据模型对您的应用来说可能有点过头了,具体取决于应用的参与程度。但是,作为旁注,您可能需要考虑更快的方法:每次您想要执行某些操作时从您的 Web 服务请求信息,或者请求一次信息,将其存储在内存中,然后根据存储的值进行操作 session 的其余部分。内存中的数据存储不会在该特定 session 之后持续存在。

此外,通过 CoreData,您可以获得许多其他很棒的功能,例如保存、获取和撤消重做。

关于iphone - 将核心数据用于 iPhone 应用程序有什么值(value)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9992989/

相关文章:

iphone - 根据容器以编程方式调整 UIViewController 的大小

iphone - QRCode在ios中编码一个简单的字符串

iphone - 在 Xcode 4.0.2 和 4.2 之间切换

ios - NSURLSession后台任务: when to call the handleEventsForBackgroundURLSession: completionHandler?

ios - uitextfield selected 更改状态栏颜色

iphone - 解锁编程旋转锁后强制 iOS ViewController 旋转到设备方向

ios - UIWebView 显示带有图像和表格的 RTF 文件

objective-c - Cocos2d 3.0 中的 SimpleAudioEngine

ios - 在 iOS 版 Facebook Login 4.4 中手动清除 facebook token

ios - 居中 UITextField