使用iPhone应用程序的核心数据有什么价值吗?

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

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

在我的情况下,我正在为一个具有API的Web应用程序编写时间表应用程序,如果在核心数据(Sqlite)中复制我的服务器上的数据结构有任何价值,我正在辩论

例如

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

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

我意识到某种离线模式你可以本地存储在核心数据中,但是这会产生更多问题,因为当你再次获得连接时,你将这些数据同步回Web服务器时遇到了很大的问题。例如,选择用于a的项目时间表不再存在。

任何有经验的开发人员都可以了解核心数据何时是最佳实践方法的经验?

编辑

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

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

此外,使用CoreData,您还可以获得许多其他强大function,如保存,获取和撤消重做。

基本上有两种应用程序。 那些为您提供本地function(游戏,专业应用程序,导航系统……)以及授予您访问远程服务的function。

您的应用似乎属于第二类。 如果您访问远程服务,您的用户将需要访问新的或实时数据(您不想阅读2周的Facebookpost)但在某些情况下,本地缓存是有意义的(例如,当您是在阅读邮件时在不稳定网络的火车上)。

我认为,与访问实时数据的重要性相比,未连接到网络时访问缓存条目的价值对于您的客户(内部或外部)而言相当低。 因此可能根本不需要本地存储。

如果您的时间表中没有数百个条目,则“正常”序列化(NSCoding协议)可能就足够了。 如果您只访问一些“仪表板数据”,您将能够与简单的请求/响应缓存相处(NSURLCache可以执行很多操作……)。

如果您具有应与服务器同步的复杂数据结构,核心数据确实更有意义。 这为您的项目增加了许多同步逻辑以及Core Data集成的复杂性(并发性,线程安全性,应用内冲突……)。

如果您想创建一个具有服务器驱动的用户体验的“客户端”-app,则根本不需要本地存储,因此我的建议是:尽管确实需要离线存储,但要尽可能简单。

如果您想在手机上本地存储数据,这是理想的选择。

但是说真的,如果你的时间表应用程序看不到它的需要,那么不要担心它并且不要使用它。

解决您在“离线”模式下遇到的同步问题将在您的应用设计中详细说明。 例如 – 不允许删除项目。 你为什么这样? 您不想回到过去并查看特定项目的先前数据吗? 相反,只需在项目上标记一个标记即可将其显示为非活动状态,并将日期/时间设置为非活动状态。 如果正在从设备同步的数据是针对该项目的,并且在它被标记为非活动的日期/时间之前,则可以同步。 否则显示一条消息,用户必须对其进行排序。

它完全取决于您的应用程序的设计是否需要在本地存储某些数据,如果它是一个真正的问题或者是围绕您的Web服务的瘦GUI客户端。 除了“离线”模式之外,在客户端缓存服务器数据的另一个原因可能是从服务器获取流量负载。 试想一下,您的服务器每次将整个时间表数据发送到客户端或仅发生更改意味着什么。 是的,这意味着双方都有更多的实施,但在某些情况下它具有很大的优势。

编辑:示例添加

您的时间表应用程序中每个用户有1000条记录,一条记录是1千字节。 在这种情况下,每次用户启动应用程序时,都必须从服务器获取〜1Mbyte数据。 如果您在本地缓存数据,服务器可以告诉您,假设自上次更新以来已更新了两条记录,因此您只需下载2千字节。 现在,您应该为成千上万的用户扩展它,您将立即注意到服务器带宽和CPU使用率的差异。