离开该视图后,在数组中维护数据?

时间:2016-06-23 23:04:16

标签: ios arrays swift

我将内容添加到主视图控制器上的集合视图中,将该内容添加到数组中,浏览我的应用程序,返回并且集合视图完全为空。

我觉得奇怪之前我还没有遇到过这个问题,因为我已经完成了教程并制作了待办事项列表和类似的应用程序,你可以转到另一个页面,回来,数据是仍然很机智。

因此,如果您离开VC时数组丢失了数据,那么在您离开后如何保持集合视图正常?重新加载数据是行不通的,因为回到屏幕时内容数组是空的。

2 个答案:

答案 0 :(得分:2)

您遇到的问题是您没有持久存储空间。在iOS中,如果设备上没有存储某些内容,则一旦离开View Controller,它就会很容易丢失。

/////////////////////////////////////////////// ///////////////////////

修改

当保存它们的对象被解除分配时,或者当它们的值以某种方式明显改变时,变量会丢失它们的值(参见其他答案)。

例如,某些segue类型可能会创建VC的新实例,从而导致数据丢失。永久存储值可以绕过这些问题。

/////////////////////////////////////////////// //////////////////////

就持久存储而言,有以下几种选择:

  

1)使用在线数据库(虽然需要WiFi)

     

2)使用NSUserDefaults(容易持久存储以获取相当小的信息:避免图像)

     

3)核心数据(设备上的持久存储:更复杂但功能更强大)

我建议从数组的NSUserDefaults开始,因为这很容易学习。

以下是您可以写入NSUserDefaults的方法:

let defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject(myArray, forKey: "arrayKey")

这就是你可以检索数据的方法:

var retrievedArray = defaults.objectForKey("arrayKey") as [String]

我假设它是一个字符串数组。 因此,当您向数组添加数据时,将其存储在NSUserDefaults中,然后,当您需要检索数据时,从那里获取数据。

此外,这将允许您在其他ViewControllers以及应用程序终止后访问此信息。换句话说,数据是留下来的。您当然可以覆盖它,也可以通过删除应用程序将其删除。

看看这个: https://www.hackingwithswift.com/read/12/2/reading-and-writing-basics-nsuserdefaults

答案 1 :(得分:1)

  

因此,当你离开VC时数组会丢失数据

他们没有。当保存它们的对象被解除分配时,或者当它们被明确清除/重新初始化/删除时,它们会丢失它们的值。

您确定包含集合视图的视图控制器是否已取消分配?您是否在viewWillAppear()viewDidAppear()viewWillDisappear()viewDidDisappear()重置数组?