2016-05-24 30 views
-1

私はproductionScheduleという名前のNSDictionaryを持っています。内部には1つのキーと値のペアがあり、そのキーはKeyValueと呼ばれ、KayValueの値は31の要素です2つのキーと値のペアNSDictionaryには、キーと値があります。私がやろうとしているのは、例えばFA50100のようなキーの値(NSDictionary)です。 :ここではここproductionScheduleObjective-CキーNSDictionaryとNSArrayから値を取得

enter image description here

のスクリーンショットは、私がどのように特定のキー

をオフに基づいて値がこれは私のすべての値を与え得るでしょう

NSDictionary *productionDictionary = [[productionSchedule valueForKey:@"KeyValue"] valueForKey:[prodSchedSortedKeys objectAtIndex:0]]; 

を試してみましたアイテムですされます

NSLog(@"%@", [[productionSchedule objectForKey:@"KeyValue"] valueForKey:@"Value"]); 

私はちょうどミスミンだと思うグラムです。KeyValueと価値

私はこれを試してその間の何か:

NSLog(@"%@", [[[productionSchedule objectForKey:@"KeyValue"] valueForKey:@"FA50100"] valueForKey:@"Value"]); 

を私はのためにダンプが少し混乱してダンプ

を読む:(

+0

特定のキーはどういう意味ですか? –

+0

私は@ "キー"に基づいて@ "値"を得る方法を意味します – user979331

+1

あなたはあなたのyourDict [@ "yourKey"]を行うことができます –

答えて

0

A. 31のヌルを取得LLDB。それを見てみましょう。

これは、あなたが得るものです:

productionSchedule (dictionary with 1 kvp) 
    [0] @"KeyValue" : 31 elements 
    key = @"KeyValue" 
    value = array of 31 elements 
    … 

何? のインデックスの0 ?!これは、辞書がペアのキーと値のリストとして内部的に表現されるためです。したがって、これは単にリストの最初のペアです。のは、より多くの意味的にそれを書いて、その下のキー=と値を=忘れてみましょう:

productionSchedule (dictionary with 1 kvp) 
    @"KeyValue" : array with 31 Elements 
    … 

ので

productionSchedule[@"KeyValue"] // evals to an array 

であなたは31個の要素を持つ配列を取得します。この配列にはインデックスでアクセスする必要があります。たとえば、この配列の最初の要素を取得したいとしましょう。 (あなたがこのレイヤーで配列を認識しなかったので、あなたは何の要素が必要なのか、あなたは言わなかった。アレイを検索したいかもしれない。

productionSchedule (dictionary with 1 kvp) 
    @"KeyValue" : 31 elements 
    [0] dictionary with 2 kvp 
    … 

この配列の最初の要素は辞書です。

productionSchedule[@"KeyValue"][0] // evals to a dictionary 

2つのkvpがあります。再度、索引付けについて忘れてください。それは辞書です:全体の構造が壊れているようだ:

productionSchedule (dictionary with 1 kvp) 
    @"KeyValue" : 31 elements 
    [0] dictionary with 2 kvp 
     @"Key" : @"FA50100" 
    … 

だから@"FA50100"を取得するには、構造

は私がこれを言ってみましょう

productionSchedule[@"KeyValue"][0][@"Key"] // evals to a dictionary 

にB.を行う必要があります。どのようにそれを作成しましたか?完全な情報を持たずに、私はあなたにいくつかのアドバイスを与えるだろう:

A)のkVpと「です。KeyValue」@無意味なキーで辞書を持って、完全に無意味です。まず、それを投げ捨て、配列から始めなければなりません。

b)この配列の内部には、31個の要素があります。私はこれが本当のリストであると仮定します。しかし、これは2 kvpの辞書でモデル化されています。 (私は、この構造は、あまりにも、31個の要素の残りの部分に適用されることを前提としています。)辞書には、「キー」@この

のようなものです:「FA50100」@ 「値」@:辞書を6のkVpで

c)kvpを保持するコレクションの中にkvpを作成しました。そうするのは何ですか?

明らかに@"FA50100"はidのようなもので、@"Value"と呼ばれる値はこのキーのデータです。 、cが不可能な場合、あなたは単に

NSDictionary *collection = … 
collection[@"FA50100"] // gets the dictionary for FA50100 

d)で@"FA50100"の値にアクセスすることができ

@"FA50100" : dictionary with 6 kvp. 

理由:だから単純に配列とSTOR IDと単一の辞書でそのデータを捨てますid @"FA50100"はリスト内で複数回出現し、配列を使用して戻り、idを6 kvpの辞書に入れます。

しかし、本当に決して、辞書の中の@ "Key"や@ "Value"のようなキーは使用しないでください。あなたは再帰的なコレクションで迷子場合のデバッグ

については

C.は、しかし、ここでは、ヒントです:ステップとクラスを取得するために、各ステップのログを作成する段階からそれを読んでください。

+0

これでキーを取得することができました... 'productionSchedule [@" KeyValue "] [0] [@" Key "]'しかし、NSDictionary * collection = ... collection [@ "FA50100"] '私のデータは外部からのものではありません。 – user979331

+0

データ構造を変更できない場合は、次の2つのオプションがあります。1.データを取得するときに便利な構造にデータを変換する。2. [@ "KeyValue"] [0] [@ "Key "]'。個人的に私は最初の選択肢を好むでしょう。 –

+0

'[@" KeyValue "] [0] [@" Key "]'私に 'Value'を与える​​方法 – user979331

関連する問題