web-dev-qa-db-ja.com

複数値のタイトルと設定バンドルの値を使用する方法

アプリの設定バンドルに複数の値の設定(場所)が定義されています。
タイトルは「London」などの長いタイトルとして定義され、設定の対応する値の部分は「1」として定義されます。

[編集]

この質問を拡張するために、複数の値の設定に関する情報を追加します。

this is a screenshot of the multi value setting

アイテム0でロンドンのタイトルを取得する方法。上記のように、objectForKeyまたはvalueForKeyを取得すると、常に1が取得されます。アプリのラベルのタイトルから文字列「LONDON」を表示したいが、コアデータで値1を使用したい。注:アプリを実行する前に設定で値を設定したので、値が返されますが、タイトルにアクセスできないようなので、値は常に1です。

25
motionpotion

「デフォルト値」の値を「1」に設定する必要があります。「値」リストのアイテム0のみです。

12

私は同じような状況に遭遇し、それが誰かを助けるだろうという質問に答えました。

私が質問を正しく理解している場合、ユーザーが設定からロンドンを選択すると、デフォルト値は1になります。locationSettingの設定バンドルを読み取ると、LONDONではなく値1が取得されますが、コードではなく「LONDON」が必要です。 1. plistの現在の構造では不可能です。デフォルト値を文字列ではなく辞書にすると、その辞書内にタイトルと値の両方を含めることができます。その後、選択した値のテキストを取得できます。

5
Tamil

複数値としての位置設定は、NSDictionaryです。したがって、以下を実行します。

NSDictionary *location = [[NSUserDefaults standardUserDefaults] valueForKey:@"locationSettings"]; 

NSString *value = (NSString *)location; 

文字列が返されることがわかっているので、場所の値をNSStringとしてキャストします。

その後、結果を文字列として処理できます。返される「値」変数は、値セクションに記述されているものです。あなたの場合、「ロンドン」を選択すると、文字列の形で「1」の値が返されます。

2
jheneghan

あなたの質問に対する私の理解が正しい場合、ユーザーが選択した値のロケーションディクショナリのキーエントリを取得する方法を尋ねています。

辞書の場合、そのような使い捨ての方法はありません。ただし、以下のようにallKeysを操作して同じ結果を得る方法があります。

NSDictionary *location = [[NSUserDefaults standardUserDefaults] valueForKey:@"locationSettings"]; 
NSArray *keys = [location allKeys];
NSString *locationIdentifier = [keys objectForIndex:[location valueForKey:@"LONDON"]];

これは"LONDON"文字列はlocationIdentifier変数に格納されます。したがって、最後の行である文字列の割り当ては、単にobjectForIndex:0代わりに、これは私が以前に試したものではないため、確信が持てません。

0
royalmurder