Ios 使用核心数据存储大量对象

Ios 使用核心数据存储大量对象,ios,objective-c,core-data,Ios,Objective C,Core Data,我对核心数据有些陌生,有一个一般性的问题 在我当前的项目中,用户可以访问我所在州每个县的各种传感器报告的数据。每个传感器都表示在一个表视图中,该表视图从web服务调用收集其数据。调用web服务可能需要一些时间,因为此应用程序可能用于无线连接速度较慢的农村地区。此外,用户通常只需要该州55个县中的一个或两个县的数据。每个县都可能有15到500个由web服务返回的项目。由于传感器名称和位置很少更改,我希望应用程序缓存来自web服务调用的数据,以加快传感器位置列表的收集速度(并在发生更改的情况下提供刷

我对核心数据有些陌生,有一个一般性的问题

在我当前的项目中,用户可以访问我所在州每个县的各种传感器报告的数据。每个传感器都表示在一个表视图中,该表视图从web服务调用收集其数据。调用web服务可能需要一些时间,因为此应用程序可能用于无线连接速度较慢的农村地区。此外,用户通常只需要该州55个县中的一个或两个县的数据。每个县都可能有15到500个由web服务返回的项目。由于传感器名称和位置很少更改,我希望应用程序缓存来自web服务调用的数据,以加快传感器位置列表的收集速度(并在发生更改的情况下提供刷新按钮)。该应用程序已经使用核心数据存储书签传感器位置,因此已在应用程序中设置

我的问题是,是使用核心数据缓存传感器列表,还是使用SqlLite数据存储。由于已经有了一个数据模型,我可以简单地向模型中添加另一个实体。然而,我担心这是否会带来不必要的开销,或者根本没有

作为核心数据的新手,似乎所有真正发生的事情都是将对象序列化,并将其属性作为字段添加到由核心数据管理的SqlLite数据库中。如果是这种情况,那么使用已经存在的核心数据存储似乎真的不会有任何开销

谁能帮我澄清一下吗?谢谢

作为核心数据的新手,似乎所有真正发生的事情都是将对象序列化,并将其属性作为字段添加到由核心数据管理的SqlLite数据库中。如果是这种情况,那么使用已经存在的核心数据存储似乎真的不会有任何开销

情况并非总是如此。核心数据对开发人员隐藏其存储实现。它有时是SQL数据库,但在其他情况下,它可以是不同的数据存储。如果您需要CoreData的全面指南,我建议您

正如@CouchDeveloper所指出的,CoreData是一个磁盘io/CPU绑定的进程。如果您注意到性能问题,请将其放入后台线程(是的,这是一个非常令人头痛的问题),但它总是比平均网络速度更快

似乎所有真正发生的事情都是对象 序列化并将其属性作为字段添加到SqlLite数据库中 由核心数据管理

你说得对。核心数据做的更多,但这是基本功能(如果您告诉它使用SQLite存储,这是大多数人所做的)

至于要存储在核心数据中的记录数量,这应该不是问题。我现在正在开发一款Core Data应用程序,它在Core Data中还存储了20000多条记录,而且我仍然可以获得非常快的获取时间,例如在键入时自动完成


核心数据肯定会增加一些开销,但如果您只有很少的实体和关系,并且没有在多个上下文中创建/修改对象,那么这是可以忽略的。

我不会担心,因为事实上反之亦然:核心数据是CPU和磁盘绑定的操作,而慢速网络是网络绑定的操作。网络运行越慢,核心数据传输速度越快。在具有多个CPU和慢速网络的系统上,核心数据可能不会增加任何下载持续时间。但在快速网络上,核心数据可能占总时间的90%!如果一个用户存储了所有55个县的数据,记录总数将在4000条左右。这不太可能。大多数用户只需要一到三个县的数据