使用Struct从NSUserDefaults保存并读取NSArray

时间:2016-09-20 11:50:48

标签: ios swift struct nsarray nsuserdefaults

我尝试使用结构和NSUserDefaults来保存字符串,一切顺利。

但我无法对NSArray执行相同操作。

这是我的代码,

结构:

struct ServiceKey{
static let XX : NSArray = ["xx"]
}

保存:

let defaults = NSUserDefaults.standardUserDefaults()

var first = denominationsALFA as! NSArray
defaults.setObject(first, forKey: ServiceKey.XX)

阅读:

let defaults = NSUserDefaults.standardUserDefaults()
defaults.arrayForKey(ServiceKey.XX)

所以这可能是解决这个问题的最佳方法

3 个答案:

答案 0 :(得分:0)

检查方法setObject(:forKey:)的语法forKeyString参数的类型,因此将XX类型从String更改为NSArray然后使用setObjectarrayForKey方法。

struct ServiceKey{
    static let XX: String = "xx"
}

现在在NSUserDefaults

中设置对象
let defaults = NSUserDefaults.standardUserDefaults()
var first = denominationsALFA as! NSArray
defaults.setObject(first, forKey: ServiceKey.XX)

NSUserDefaults

中检索对象
let defaults = NSUserDefaults.standardUserDefaults()
var array = defaults.arrayForKey(ServiceKey.XX)

有关详情,请查看NSUserDefaults上的Apple Documentation

答案 1 :(得分:0)

我的意思是,你需要使用' key'作为字符串而不是字符串数组。 用它来保存密钥。 其他事情可以保持不变。

struct ServiceKey{ static let XX = "xx" }

答案 2 :(得分:0)

问题似乎是你使用数组作为键(首先作为值)。密钥应该是String,因此它将使用Array-instance的描述。 当您获取描述时可能会有所不同。所以要使其工作:使用String作为键,使用(NS)Array作为值。 在你的情况下: -ServiceKey.XX应该是一个String -first应该是一个数组