2016-09-20 9 views
0

構造体とNSUserDefaultsを使用して文字列を保存しようとしていますが、すべてうまくいきます。構造体を使ってNSArrayを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) 

ので、この問題のために最善の解決策何ができるか

+0

のキーは文字列ではなく文字列である必要があります。 – Ankit

+0

私はそれを次のようにしようとしています:static let XX:NSArray = "xx"しかし、それは私にエラーを与えます:文字列はNSArray @Ankitに変換できません –

答えて

0

がここforKeyの方法setObject(:forKey:)の構文を確認しているがStringパラメータのタイプですので、setObjectarrayForKeyメソッドを使用し、その後NSArrayからStringにあなたXXタイプを変更します。今すぐ詳細についてはNSUserDefaults

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

からオブジェクトを取得しNSUserDefaults

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

でオブジェクトを設定し

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

NSUserDefaultsApple Documentationを確認してください。

0

私は、文字列としてではなく、文字列として 'キー'を使用する必要があることを意味します。 キーを保存するときに使用します。 他のものは同じままにすることができます。

struct ServiceKey{ static let XX = "xx" }

0

問題は、(値として最初と)キーとして配列を使用していることのようです。キーはStringでなければならないので、Array-instanceの説明を使用します。 説明を取得する際に異なる場合があります。そのためには、文字列をキーとして使用し、値として(NS)配列を使用します。 -ServiceKey.XXは文字列である必要があります - 最初は配列である必要があります

関連する問題