使用 Struct 从 NSUserDefaults 保存和读取 NSArray

Save and Read NSArray from NSUserDefaults using Struct

我正在尝试使用结构和 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)

那么这个问题的最佳解决方案是什么

在此处检查方法 setObject(:forKey:) 的语法 forKeyString 参数的类型,因此将 XX 类型从 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

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

struct ServiceKey{ static let XX = "xx" }

问题似乎是您使用数组作为键(首先作为值)。键应该是一个字符串,所以它将使用数组实例的描述。 当您获取时,描述可能会有所不同。所以要让它工作:使用一个字符串作为键,一个 (NS)Array 作为值。 在你的情况下: -ServiceKey.XX 应该是一个字符串 -首先应该是一个数组