2017-05-09 29 views
0

"thisList"というNSDictionaryがあり、そのキー "list_collection"の値を取得する必要があります。NSSingleEntryDictionaryの値を取得できません

Xcodeは、値が "NSSingleEntryDictionary"であることを示します。

値自体にはさらに別の辞書が含まれています。

スクリーンショットを見て取らないしてください:関係なく、私がしようとするもの(objectforKey/valueforKey)または任意のタイプのオブジェクトの私は初期化(NSArrayの/ NSMutableArrayの/ NSDictionaryの/ NSMutableDictionary)私は結局、今 enter image description here

をゼロ値。

明らかに、これを処理する方法に関するいくつかの本質的な知識が不足しています。

私の質問:どのようにキー "list_collection"の値でオブジェクトを初期化する必要がありますか?ここで

は、JSONの(部分)ダンプです:

Printing description of thisList: 
{ 
    archived = 0; 
    "chapter_part" = ""; 
    "chapter_title" = ""; 
    comment = ""; 
    "cover_id" = "<null>"; 
    "created_at" = "2017-01-06T12:59:04.000+01:00"; 
    "date_created" = "06 January 2017"; 
    deleted = 0; 
    id = 141384502; 
    isMyList = 1; 
    keywords =  (
    ); 
    "list_collection" =  { 
     lists =   (
         { 
       "speech_locale" = EN; 
       subject = engels; 
       words =     (
             { 
         word = attitude; 
        }, 

私にとって最も論理的なアプローチは次のようになります。

NSDictionary * myDic = [thisList objectForKey:@"list_collection"]; 

注:私は明示的に初期化されませんでした 'myDic' ここに。あなたの洞察力のための

NSString * hlists = [json objectForKey:@"lists"]; 
    NSData* data = [hlists dataUsingEncoding:NSUTF8StringEncoding]; 
    NSArray *wrtsLists = [NSJSONSerialization JSONObjectWithData:data options:0 error:&jsonParsingError]; 
    Lists = [[NSMutableArray alloc]init]; 
    for (NSDictionary *thisList in wrtsLists){ 
     WordList* theList = [[WordList alloc]init]; 
     theList.title = [thisList valueForKey:@"title"]; 
     [Lists addObject:theList]; 
     NSDictionary *myDic = thisList[@"list_collection"]; 
     >>>>this is where I put a breakpoint. myDic is nil here 
    } 

ありがとう:

は文脈で物事を置くために、ここに私のコードです。

+2

いくつかのコードとJSONデータを投稿できますか?私たちはあなたの問題であなたを助けることができます。 – CodeChanger

+0

変数が宣言されているオブジェクトの種類は問わず、キーが正しい場合は「nil」になりません。型の不一致は、後で行のクラッシュを引き起こす可能性がありますが、値をnilにしません。 コンソールを使用し、 "po thisList.allKeys"と入力して、キーのスペルが正しいかどうかを確認してください。 – GreatWiz

+0

スクリーンショットによれば、*最も論理的なアプローチ*が有効です。しかし、私はいつも 'thisList [@" list_collection "]'のようなキーサブスクリプションを好むでしょう。 – vadian

答えて

1

あなたは、単にこのコードによって

NSDictionary *myDic = thisList[@"list_collection"]; 
-1

を使用して「thisList」から「list_collection」配列は、それが最後にあなた

NSDictionary *myDic = [thelist valueForKey:"list_collection"]; 
+0

明示的にKVCが必要な理由を説明できない限り、 'valueForKey'を使わないでください。 – vadian

0

を助け、この希望をお試しください得ることができ、私はそれことを、考え出しましたXcodeの問題でした。 デバッグ領域には、私のオブジェクトの値が正しく表示されませんでした。 Xcodeを再起動したところ、期待どおりに動作するようになりました。 私はこれで数時間の人生を失った。しかし、あなたの良いアドバイスのおかげで、私はたくさんのことを学びました。

関連する問題