Wil*_*son 18 nsuserdefaults tableview ios swift
我正在尝试将数组存储到NSUserDefaults并在需要填充数据时检索数组UITableView.
目前我正在使用:
//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()
Run Code Online (Sandbox Code Playgroud)
但我明白了
致命错误:
nil在解包可选值时意外发现
在尝试加载数据时.我不确定问题是存储还是检索.以前有人经历过这个吗?
Viv*_*kar 31
从你的代码我看到你正在存储一些数组
// Your code
NSUserDefaults.standardUserDefaults().setObject(myArray, forKey: "\(identity.text!)listA")
Run Code Online (Sandbox Code Playgroud)
并检索一个字符串
//Your code
let tabledata = NSUserDefaults.standardUserDefaults().stringForKey("\(identity.text!)listA")
Run Code Online (Sandbox Code Playgroud)
可能存在类型不匹配,您存储一种类型并检索另一种类型.
在检索时使用arrayForKey()或objectForKey()查看下面的代码.
let tabledata = NSUserDefaults.standardUserDefaults().arrayForKey("\(identity.text!)listA")
Run Code Online (Sandbox Code Playgroud)
要么
let tabledata = NSUserDefaults.standardUserDefaults().objectForKey("\(identity.text!)listA")
Run Code Online (Sandbox Code Playgroud)
如果它是一个阵列,我会选择第一个.
Jat*_* JP 10
以下是您可以借助的方式存储和检索对象数组的方法NSKeyArchive.
将阵列存储到NSUserDefault.
let placesData = NSKeyedArchiver.archivedData(withRootObject: placesArray)
UserDefaults.standard.set(placesData, forKey: "places")
Run Code Online (Sandbox Code Playgroud)
从NSUserDefault检索数组.
let placesData = UserDefaults.standard.object(forKey: "places") as? NSData
if let placesData = placesData {
let placesArray = NSKeyedUnarchiver.unarchiveObject(with: placesData as Data) as? [Place]
print(placesArray)
}
Run Code Online (Sandbox Code Playgroud)
希望这对你有所帮助.
Sur*_*gch 10
我来看这个问题,看看如何将一个String数组保存到UserDefaults,但在这里找不到明确的答案.但是,我确实找到了如何使用NSUserDefaults保存用户设置的答案.阅读该文章了解更多信息.
保存数组
let array = ["horse", "cow", "camel", "sheep", "goat"]
let defaults = UserDefaults.standard
defaults.set(array, forKey: "SavedStringArray")
Run Code Online (Sandbox Code Playgroud)
检索数组
let defaults = UserDefaults.standard
let array = defaults.object(forKey: "SavedStringArray") as? [String] ?? [String]()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
39999 次 |
| 最近记录: |