2013-04-26 30 views
0

这是一个非常难以问的问题,因为我不想用我所有的代码淹没你,因为它大部分与问题无关。所以我不会惊讶,如果这没有得到答复。虽然,可能是简单的事情,我错过了哈哈。这里是:Objective-C iOS应用程序没有将数据存储在对象数组中

所以我的应用程序通过[编码器]在我的appDelegate中存储数组。该应用程序充满了在单独的NSObject类中创建的对象。想想这个例子吧: 我有我的主要viewController类。在appDelegate中,我定义/编码一个对象数组。 现在在我的主体中,我用10个“汽车”填充阵列。我的汽车类有颜色,制造,模型等变量。现在,当我保存并重新启动应用程序时,我保存的数组现在是一个包含10个元素的数组,但它似乎忘记了所有变量汽车类的每个实例。

当我重新启动应用程序时,如果我调用NSLog(@“%@”,appDelegate中的数组);它打印10行,看起来很像这样: “” 所以我知道数组存储10个元素,并保存了10个元素,但就像我说的,所有的变量都消失了。

注意:在应用程序的第一次运行中,第一次填充数组时,我可以完全访问所有变量,并且没有任何问题。

谢谢你的帮助,我可以得到!

+0

请在“car”类中发布用于实现initWithCoder和encodeWithCoder的代码。如果你还没有实现它们,那就是你的问题。 – Wain 2013-04-26 23:25:39

+0

哈哈是的,那是我的问题。我发布后很快就看到了它。我已经保存了一个不同类的字符串,并且完全忘了关于initWithCode/encodeWithCoder haha​​ha。谢谢! 发布您所说的解决方案,我会将其标记为已回答。 – 2013-04-27 00:57:57

+0

谢谢,我添加了更多的细节来帮助未来的读者:-) – Wain 2013-04-27 07:27:50

回答

0

我们需要在“car”类中看到用于实现initWithCoder和encodeWithCoder的代码。如果你还没有实现它们,那就是你的问题。

目前可能发生的情况是,只有这些方法的超类实现被调用。这意味着将重新创建正确的课程,但不会保存或恢复任何数据。

NSCoding protocol reference doc

0

您的主类以及您放入数组的所有对象都需要符合NSCoding。如果数组中的对象不符合NSCoding,则不会自动进行编码。

相关问题