【问题标题】:Save and Read NSArray from NSUserDefaults using Struct使用 Struct 从 NSUserDefaults 保存和读取 NSArray
【发布时间】:2016-09-20 11:50:47
【问题描述】:

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

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

【问题讨论】:

  • NSUserDefaults 的键必须是字符串而不是字符串数组。
  • 我尝试将其设为:static let XX : NSArray = "xx" 但它给了我一个错误:String is not convertible to NSArray @Ankit

标签: ios swift struct nsarray nsuserdefaults


【解决方案1】:

检查setObject(:forKey:) 方法的语法,这里forKeyString 参数的类型,因此将XX 类型从NSArray 更改为String,然后使用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)

更多详情请查看Apple DocumentationNSUserDefaults

【讨论】:

    【解决方案2】:

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

    struct ServiceKey{ static let XX = "xx" }

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多