在核心数据中保存对象数组

时间:2010-07-13 09:48:56

标签: iphone core-data

我的iphone应用程序以下列格式从RestServer检索数据:

{
data => (
    {
             date => "20100710T12:21:23+02:00",
             value => 0.1
            },
    {
             date => "20100710T12:30:23+02:00",
             value => 25
            },
             ...
    {
             date => "20100710T15:21:23+02:00",
             value => 3
            }
       ),
 field1 => value1,
 field2 => value2
}

今天,我循环通过数组(objectAtIndex:0)并在Core Date中保存每个对象,如:

        {
             date => "20100710T15:21:23+02:00",
             value => 3
            }

我在核心数据(Measure)中创建了一个具有2个属性(日期,值)的实体。 是否有意义直接保存数组而不必一个接一个地保存元素?

好吧,事实上,我已经忘记了一个重要的观点。除此之外,我还需要在没有此日期值的情况下插入数据。 在这种情况下,日期是主键的knid。 根据我读到的内容,我不认为这是核心数据开箱即用的可能功能。 在这种情况下,有没有最快的方法来做到这一点,而不是在将数据插入数据库之前逐个检查记录存在?

非常感谢, LUC

1 个答案:

答案 0 :(得分:3)

数组中的每个元素都由Core Data中的单个对象表示,因此,是的,您必须为每个元素创建一个对象。如果您不必这样做,那么您首先就不会有对象图。

您必须检查现有对象,因为Core Data堆栈中的每个对象都是完全唯一的。但是,这样做并不比检查数组或SQL表中的相同数据复杂。

核心数据的优势在于管理具有数据实体之间复杂关系的数据模型。对于数据而言,这通常是过度的,这些数据只是一个没有关系的单个哑表。但是,与UI和应用程序/系统的其他部分集成的简易性通常会支付输入该单个表的前期过度杀伤。