(Swift)将阵列存储和检索到NSUserDefaults [英] (Swift) Storing and retrieving Array to NSUserDefaults
问题描述
我正在尝试将数组存储到 NSUserDefaults
,并在需要填充 UITableView
时检索该数组。 / p>
目前我正在使用:
//存储数据
NSUserDefaults.standardUserDefaults()。setObject(myArray,forKey:\(identity.text!)listA)
NSUserDefaults.standardUserDefaults()。synchronize()
//检索数据
let tabledata = NSUserDefaults.standardUserDefaults()。stringForKey(\(identity.text!)listA)
myArray = [tabledata!]
tableView.reloadData()
但我得到
致命错误:意外发现
nil
,同时展开可选的
值
尝试加载数据时。我不确定问题是存储还是检索。有没有人经历过这个?
从你的代码中我看到你正在存储一些数组
//您的代码
NSUserDefaults.standardUserDefaults()。setObject(myArray,forKey:\(identity.text!)listA)
并检索字符串
//你的代码
let tabledata = NSUserDefaults.standardUserDefaults()。stringForKey(\(identity.text!)listA)
可能存在类型不匹配,您存储一种类型并检索另一种类型。
检索任何一种用途 arrayForKey()
或 objectForKey()
请参阅以下代码。
let tabledata = NSUserDefaults.standardUserDefaults()。arrayForKey(\(identity.text!)listA)
或
let tabledata = NSUserDefaults.standardUserDefaults()。objectForKey( \(identity.text!)LIS tA)
如果是数组,我会选择第一个。
I am trying to store an array to NSUserDefaults
and retrieve the array when needed to populate a UITableView
.
Currently I am using:
//store data
NSUserDefaults.standardUserDefaults().setObject(myArray, forKey: "\(identity.text!)listA")
NSUserDefaults.standardUserDefaults().synchronize()
//retrieve data
let tabledata = NSUserDefaults.standardUserDefaults().stringForKey("\(identity.text!)listA")
myArray = [tabledata!]
tableView.reloadData()
But I get
fatal error: unexpectedly found
nil
while unwrapping an Optional value
when trying to load the data. I am not sure if the issue is in the storage or the retrieval. Has anyone been through this before?
From your code I see you are storing some array
// Your code
NSUserDefaults.standardUserDefaults().setObject(myArray, forKey: "\(identity.text!)listA")
and retrieving a string
//Your code
let tabledata = NSUserDefaults.standardUserDefaults().stringForKey("\(identity.text!)listA")
There is probably a type mismatch, You store one type and retrieve another type.
While retrieving either use arrayForKey()
or objectForKey()
see the code below.
let tabledata = NSUserDefaults.standardUserDefaults().arrayForKey("\(identity.text!)listA")
or
let tabledata = NSUserDefaults.standardUserDefaults().objectForKey("\(identity.text!)listA")
If it is an array I would go with First one.
这篇关于(Swift)将阵列存储和检索到NSUserDefaults的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!