2011-12-21 5 views
0

NSUserDefaultsのすべてのキーを繰り返し処理し、別の形式に転送する必要があります。後で、それらをプログラム的に戻したいと思うでしょう。NSUserDefaults setObjectとIntegerForKeyは、同じキーで使用しますが、どうすれば回避できますか?

私は鍵がたくさんあると私は判断するために、私の命名規則に、または他の手段によって、方法がありません、私は

などのsetObjectやsetIntegerを使用した場合、私はsetObjectメソッドを使用している場合は、このようにintegerForKey使用するように私を可能にしますキー?

代わりに使うことができない場合はどうすればいいですか?

答えて

0

setObjectを使用すると、後でintegerForKeyを使用できるようになります。

もう1つの方法は、プロジェクトにplistを追加してそこにすべてを格納することです。 NSUserDefaultsがやっているのと基本的に同じですが、あなただけが手でそれをやっています。 plistの内容をNSArrayまたはNSDictionary(最初に作成したもの)に読み込んで、そのオブジェクトから必要なメンバーにアクセスできます。

これが役に立ちます。

+0

私はこれらの問題にPLISTを使用しないことをお勧めします。それは悪い習慣であり、あなたが「使用する必要がある」場合はおそらくどこかであなたの設計に欠陥があり、実装を再考する必要があります。 – Craimasjien

+0

最初の文のために授与されます。 – Jules

1

いいえ、integerForKey:を使用すると、正しいオブジェクトを取得できません。しかし、objectForKey:を使用すると、正しいオブジェクトを取得できます。これは、setInteger:forKey:を使用した場合、自動的にsetObject:forKey:が呼び出されるためです。したがって、キーの対象があります。だからあなたがしなければならないことは、キーを反復して、objectForKey:を使ってオブジェクトを取得し、それをあなたが望むデータ型に変換することです。

+0

それは働いたようです。しかし、私はデフォルト値を設定します、私はおそらくその理由を推測する? – Jules

+0

いずれにしてもうまくいくはずです。 http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSUserDefaults_Class/Reference/Reference.html#//apple_ref/occ/instm/NSUserDefaults/setInteger:forKey: – MadhavanRP

関連する問題