2016-09-20 128 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應該是一個字符串 - 第一應該是一個數組