Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 永久存储阵列的问题_Ios_Swift_Nsuserdefaults - Fatal编程技术网

Ios 永久存储阵列的问题

Ios 永久存储阵列的问题,ios,swift,nsuserdefaults,Ios,Swift,Nsuserdefaults,我正在尝试将任务永久存储在阵列中,供iOS基本清单应用程序中的用户使用(要添加到清单中的任务输入到UITextField中),如下所示: var list: [String] = [String]() @IBOutlet weak var itemField: UITextField! @IBAction func addItemPressed(sender: AnyObject) { let task: String? = itemField.text list?.ap

我正在尝试将任务永久存储在阵列中,供iOS基本清单应用程序中的用户使用(要添加到清单中的任务输入到UITextField中),如下所示:

var list: [String] = [String]()

@IBOutlet weak var itemField: UITextField!

@IBAction func addItemPressed(sender: AnyObject) {

    let task: String? = itemField.text

    list?.append(task!)

    itemField.text = nil

    NSUserDefaults.standardUserDefaults().setObject(list, forKey: "list")

    let storedList = NSUserDefaults.standardUserDefaults().objectForKey("list")! as! NSArray

    print(storedList)

}
但是,当存储的数组打印到控制台时,它只包含从运行该程序的实例输入的任务

例如,如果我在文本字段中输入:“完成盘子”,则打印到控制台的数组将包含文本。但是,当我重新启动程序时,数组是空的


我对NSUserdefaults的了解有限,因为我基本上还是一个初学者,因此我的逻辑很可能不正确。如果您知道一种更好的存储对象的方法,或者能够纠正我的错误,我将不胜感激。提前感谢:)

您的问题是在应用程序启动时没有将存储的列表数据加载到
列表中。然后,当调用
addItemPressed
时,将该项存储到空的
列表中,然后覆盖
NSUserDefaults
中存储的内容

您需要在应用程序启动时加载存储的数据。您可以在
viewDidLoad
中执行此操作:

list = NSUserDefaults.standardUserDefaults().objectForKey("list") as? [String] ?? []

这将把以前存储在
NSUserDefaults
中的值加载到你的
list
属性中,或者如果
NSUserDefaults
中没有存储这样的列表,则将其初始化为空数组。你的问题是,你没有在应用程序启动时将存储的列表数据加载到
list
。然后,当调用
addItemPressed
时,将该项存储到空的
列表中,然后覆盖
NSUserDefaults
中存储的内容

您需要在应用程序启动时加载存储的数据。您可以在
viewDidLoad
中执行此操作:

list = NSUserDefaults.standardUserDefaults().objectForKey("list") as? [String] ?? []

这将把以前存储在
NSUserDefaults
中的值加载到您的
列表
属性中,或者如果
NSUserDefaults
中没有存储这样的列表,则将其初始化为空数组。将其存储到列表中是什么意思?如果
存储列表
在启动时不包含值,那么无论如何我都无法将其添加到
列表
中,对吗?将其存储到列表中是什么意思?如果
storedList
在启动时不包含值,那么无论如何我都无法将其添加到
列表中,对吗?