如何使用NSCoding在我的应用程序中保存/加载数据?

是的,我已经浏览了许多类似于此问题的问题。 不过,我还是不太明白发生了什么事,至less我不知道如何在我的申请中做到这一点。

所以基本上我的“实践”应用程序有一个主视图控制器,显示两个文本标签。 这些文本标签由一个拥有大型数组的NSObject类填充。 用户在他们想要去的数组中input数字,数组中索引处的string成为一个标签中的文本,而用户input的数字成为另一个标签中的文本。 用户也可以通过按下一个button来从数组中“collections”一个string。 当这种情况发生时,string和索引号被添加到驻留在主视图控制器中的两个单独的可变数组中。 然后,当用户想要看到他们所有的“collections夹”,他们可以滑动(模态)调出具有所有用户的“喜欢的string”的可用视图。 这是通过使用导航控制器/ segue将数据(2个可变数组)从主视图控制器传递到uitableviewcontroller来实现的。 此时,uitableviewcontroller中有两个可变数组,它们包含来自主视图控制器的string和索引号。 然后使用委托/协议将该数据传回给主视图控制器,以在主视图控制器的标签上设置文本(在用户点击可用视图的行中)。

我build立应用程序没有问题; 一切正常。 但我不知道如何保存数据,以便当用户退出应用程序并重新打开它时,仍然可以看到表格视图以及所有他们喜欢的string。 另外,我只是假设在我的情况下,我应该使用NSCoding; 如果,但是,我需要使用核心数据或其他任何东西,然后让我知道。 如果有人能帮助我,我真的很感激。 非常详细的解释请,如果可能的话,示例代码。

您可以使用以下方法之一来达到目的

  1. 核心数据 – 如果你正在处理大量的logging,然后去为它,但根据我的理解,这是超过你的解决scheme的必要性。
  2. NSUserDefauls – 如果您的collections夹仅限于数百条logging,那么这是最好的select
  3. NSKeyArchiver / NSCoding – 如果你想保存对象到本地文件系统,你可以使用这个选项,请参阅这里获取更多信息

快乐的编码

使用writeToURL:以primefaces方式保存一个包含NSNumber对象的数组。 只需为要保存数组的位置创build一个URL,然后在数组中调用该方法,

 NSURL *docURL = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; saveURL = [docURL URLByAppendingPathComponent:@"MyIndexArray"]; BOOL success = [myArray writeToURL:saveURL atomically:YES]; NSLog(@"success is: %d",success); 

事实certificate,我一直在做正确的事。 我使用NSUserDefaults来保存数组,如果它们不是空的,那么我将数组设置为它们的NSUserDefaults,如果它们的键存在的话。 我唯一的问题是试图找出在哪里做保存和加载。 起初,我正在做的事情,将会出现,但是退后一步,真正理解NSUserDefaults做了什么,我做了viewWillDisappear&viewDidLoad。 无论如何感谢所有的帮助。 干杯。