我想将Swift样式字符串数组保存到NSUserDefaults中,但是代码中的“ if”语句通常说returnValue始终为nil。
在稍后的代码中(iOS 8),我想使用“ food + = [” spaghetti“]添加新条目。
var food : [String] {
get {
var returnValue : [String]? = NSUserDefaults.standardUserDefaults().objectForKey("food") as? [String]
if returnValue == nil //Check for first run of app
{
returnValue = ["muesli", "banana"]; //Default value
}
return returnValue!
}
set (newValue) {
NSUserDefaults.standardUserDefaults().setObject(newValue, forKey: "food")
NSUserDefaults.standardUserDefaults().synchronize()
}
}
以下代码应帮助您解决问题:
import UIKit
class ViewController: UIViewController {
var food: [String] {
get {
if let returnValue = NSUserDefaults.standardUserDefaults().objectForKey("food") as? [String] {
return returnValue
} else {
return ["muesli", "banana"] //Default value
}
}
set {
NSUserDefaults.standardUserDefaults().setObject(newValue, forKey: "food")
NSUserDefaults.standardUserDefaults().synchronize()
}
}
override func viewDidLoad() {
super.viewDidLoad()
print(food) // prints: ["muesli", "banana"] (at first launch)
food = ["cake"]
print(food) // prints: ["cake"]
food += ["spaghetti"]
print(food) // prints: ["cake", "spaghetti"]
food = []
print(food) // prints: []
NSUserDefaults.standardUserDefaults().setObject(nil, forKey: "food")
print(food) // prints: ["muesli", "banana"]
}
}
但是,使用前面的代码,如果您设置food = []
,则会遇到问题,因为food
不会返回["muesli", "banana"]
。为了避免这种情况,您可能更喜欢以下代码:
import UIKit
class ViewController: UIViewController {
var food: [String] {
get {
if let returnValue = NSUserDefaults.standardUserDefaults().objectForKey("food") as? [String] {
return returnValue == [] ? ["muesli", "banana"] : returnValue
} else {
return ["muesli", "banana"] //Default value
}
}
set {
NSUserDefaults.standardUserDefaults().setObject(newValue, forKey: "food")
NSUserDefaults.standardUserDefaults().synchronize()
}
}
override func viewDidLoad() {
super.viewDidLoad()
print(food) // prints: ["muesli", "banana"] (at first launch)
food = ["cake"]
print(food) // prints: ["cake"]
food += ["spaghetti"]
print(food) // prints: ["cake", "spaghetti"]
food = []
print(food) // prints: ["muesli", "banana"]
NSUserDefaults.standardUserDefaults().setObject(nil, forKey: "food")
print(food) // prints: ["muesli", "banana"]
}
}
问题内容: 我试图存储一个数组,并在需要时填充该数组。 目前,我正在使用: 但是我明白了 致命错误:解开Optional值时意外发现 尝试加载数据时。我不确定问题出在存储或检索中。以前有没有人经历过? 问题答案: 从您的代码中,我看到您正在存储一些数组 并检索一个字符串 类型可能不匹配,您可以存储一种类型并检索另一种类型。 检索使用或查看下面的代码。 要么 如果是数组,我会选择第一个。
问题内容: 我想创建一个属性字符串,然后将其存储在中,然后再次访问它,并将属性字符串分配给。我该怎么办?提前致谢。 问题答案: 您必须将转换为,然后将其存储在中。
如何将查询结果保存在字符串数组中 查询很简单,只有一列,即: 我想要的是将id存储在String数组中,这样我就可以将它们显示为列表视图中的可点击项。
问题内容: 我有一个新闻和一个消息。所述含有选择加入到阵列时teamObjects的的tableView。我想将此数组添加到其中,以便可以从其中包含需要teamObjects的url请求的访问它们。但是我不断得到: “试图为关键团队插入非财产列表对象(“”) 如果有比将其存储在更好的方法,我愿意接受其他建议 方法 我的对象 问题答案: 实际上,您将需要将自定义对象归档到其中,然后将其保存到用户默认
问题内容: 是否可以将图像另存为对象,然后检索以供进一步使用? 问题答案: 注意! 如果您要在iOS8 / XCODE6以下工作,请参阅下面的更新 对于仍在寻找答案的用户,这里提供了“建议”方式的代码,用于将图像保存在NSUserDefaults中。您不应该将图像数据直接保存到NSUserDefaults中! 写入数据: 读取数据: documentsPathForFileName: 对于iOS8
问题内容: 我有一个使用基于JSON的API的应用程序。作为JSON的一部分,通常将值设置为“ null”。这可能很常见: 最近,我尝试在NSUserDefaults中存储从JSON对象转换的杂项NSDictionary层次结构。不幸的是,如果有空数据,它将在IOS中转换为[NSNull null]时引发异常。显然,这不能保存在首选项中。 我想知道以前是否有人为此工作过?我尝试添加一些逻辑以首先从