是的,我已经查看过与此类似的许多问题;但是,我仍然不太明白发生了什么,或者至少我无法弄清楚如何在我的申请中做到这一点。
所以基本上我的“练习”应用程序有一个主视图控制器,显示两个文本标签。这些文本标签由包含大型数组的NSObject类填充。用户输入他们想要去的数组中的数字,数组中该索引处的字符串成为一个标签中的文本,而用户输入的数字成为另一个标签中的文本。用户还可以通过按下按钮从阵列中“喜欢”字符串。发生这种情况时,将字符串及其索引号添加到驻留在主视图控制器中的两个单独的可变数组中。然后,当用户想要看到他们所有的“收藏夹”时,他们可以向上滑动(模态地)调出具有所有用户“喜欢的字符串”的uitableview。这是通过使用导航控制器/ segue将数据(2个可变数组)从主视图控制器传递到uitableviewcontroller来实现的。此时,uitableviewcontroller中有2个可变数组,其中包含主视图控制器中的字符串和索引号。然后使用委托/协议将此数据传递回主视图控制器,以在主视图控制器的标签中设置文本(在用户点击uitableview的行中)。
构建应用程序没有问题;一切都很完美。但我不知道如何保存数据,以便当用户退出应用程序并重新打开它时,他们仍然可以看到包含他们所喜爱的所有字符串的表视图。另外,我只是假设在我的情况下,我应该使用NSCoding;但是,如果我需要使用核心数据或其他任何内容,请告诉我。如果有人能帮助我,我真的很感激。请详细解释,如果可能,请提供示例代码。
答案 0 :(得分:2)
您可以使用以下方法之一来实现它
快乐编码
答案 1 :(得分:0)
使用writeToURL:atomically来保存包含NSNumber对象的数组。只需为要保存数组的位置创建一个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);
答案 2 :(得分:0)
事实证明我一直在做这件事。我使用NSUserDefaults保存数组,前提是它们不是空的,然后我将数组设置为NSUserDefaults,如果它们的键存在的话。我唯一的问题是试图弄清楚在哪里进行保存和加载。起初,我是在viewWillAppear& viewWillDisappear,但在退后一步并真正了解NSUserDefaults做了什么之后,我在viewWillDisappear& viewDidLoad中。无论如何,谢谢你的帮助。欢呼声。