Ios 永久存储阵列的问题
我正在尝试将任务永久存储在阵列中,供iOS基本清单应用程序中的用户使用(要添加到清单中的任务输入到UITextField中),如下所示: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
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
在启动时不包含值,那么无论如何我都无法将其添加到列表中,对吗?