2016-09-20 130 views
0

我试图使用结构和NSUserDefaults保存一个字符串,并且一切顺利。使用结构保存并读取NSUserDefaults的NSArray使用结构

但是我不能为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) 

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

+0

NSUserDefaults的键需要是一个字符串而不是字符串数组。 – Ankit

+0

我试图使它为:static let XX:NSArray =“xx”但它给我一个错误:字符串不能转换为NSArray @Ankit –

回答

0

检查方法setObject(:forKey:)这里forKey是的语法是String参数的类型,所以改变你XX类型StringNSArray然后使用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

0

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

struct ServiceKey{ static let XX = "xx" }

0

这个问题似乎是,你正在使用的数组作为键(第一为值)。键应该是一个String,所以它将使用Array-instance的描述。 当你获取描述可以不同。所以要使它工作:使用一个字符串作为关键字,并使用(NS)数组作为值。 在你的情况: -ServiceKey.XX应该是一个字符串 - 第一应该是一个数组