アプリの設定バンドルに複数の値の設定(場所)が定義されています。
タイトルは「London」などの長いタイトルとして定義され、設定の対応する値の部分は「1」として定義されます。
[編集]
この質問を拡張するために、複数の値の設定に関する情報を追加します。
アイテム0でロンドンのタイトルを取得する方法。上記のように、objectForKeyまたはvalueForKeyを取得すると、常に1が取得されます。アプリのラベルのタイトルから文字列「LONDON」を表示したいが、コアデータで値1を使用したい。注:アプリを実行する前に設定で値を設定したので、値が返されますが、タイトルにアクセスできないようなので、値は常に1です。
「デフォルト値」の値を「1」に設定する必要があります。「値」リストのアイテム0のみです。
私は同じような状況に遭遇し、それが誰かを助けるだろうという質問に答えました。
私が質問を正しく理解している場合、ユーザーが設定からロンドンを選択すると、デフォルト値は1になります。locationSettingの設定バンドルを読み取ると、LONDONではなく値1が取得されますが、コードではなく「LONDON」が必要です。 1. plistの現在の構造では不可能です。デフォルト値を文字列ではなく辞書にすると、その辞書内にタイトルと値の両方を含めることができます。その後、選択した値のテキストを取得できます。
複数値としての位置設定は、NSDictionaryです。したがって、以下を実行します。
NSDictionary *location = [[NSUserDefaults standardUserDefaults] valueForKey:@"locationSettings"];
NSString *value = (NSString *)location;
文字列が返されることがわかっているので、場所の値をNSStringとしてキャストします。
その後、結果を文字列として処理できます。返される「値」変数は、値セクションに記述されているものです。あなたの場合、「ロンドン」を選択すると、文字列の形で「1」の値が返されます。
あなたの質問に対する私の理解が正しい場合、ユーザーが選択した値のロケーションディクショナリのキーエントリを取得する方法を尋ねています。
辞書の場合、そのような使い捨ての方法はありません。ただし、以下のようにallKeys
を操作して同じ結果を得る方法があります。
NSDictionary *location = [[NSUserDefaults standardUserDefaults] valueForKey:@"locationSettings"];
NSArray *keys = [location allKeys];
NSString *locationIdentifier = [keys objectForIndex:[location valueForKey:@"LONDON"]];
これは"LONDON"
文字列はlocationIdentifier
変数に格納されます。したがって、最後の行である文字列の割り当ては、単にobjectForIndex:0
代わりに、これは私が以前に試したものではないため、確信が持てません。