(Swift)将阵列存储和检索到NSUserDefaults [英] (Swift) Storing and retrieving Array to NSUserDefaults

查看:91
本文介绍了(Swift)将阵列存储和检索到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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆