2011-06-30 11 views
0

JSONのクライアントアプリケーションにデータを返すWebサービスがあります。私はTouchJsonを使用して、このデータをNSDictionaryにデシリアライズしています。すばらしいです。辞書にはキーが含まれており、「結果」と結果にはオブジェクトのNSArrayが含まれています。NSDictionaryからプロパティを取得するにはどうすればよいですか?

すなわち

NSLog(@"Results Contents: %@",[resultsArray objectAtIndex:0 ]); 

出力ログに出力する場合、これらのオブジェクトは、次のようになります。

Results Contents: { 
    creationdate = "2011-06-29 22:03:24";   
    id = 1; 
    notes = "This is a test item"; 
    title = "Test Item"; 
    "users_id" = 1; 
} 

を、私は、このオブジェクトが何であるかの種類を判別することはできません。このオブジェクトからプロパティと値を取得するにはどうすればよいですか?

ありがとうございます! 、NSDictionaryについて

const char* className = class_getName([yourObject class]); 

NSString *className = NSStringFromClass([yourObject class]); 

:あなたはこれらのいずれかを使用することができ、オブジェクトのクラス名を取得するには

[yourObject isKindOfClass:[a class]] 

[yourObject isMemberOfClass:[a class]] 

+0

これは、 '結果'に表示されているNSDictionaryです。あなたは、オブジェクトとキーのペアを見ることで分かります。たとえば、「users_id」がキー、「1」がオブジェクトです。 –

+0

NSDictionaryです。 '-objectForKey:'を使ってそれぞれを取得します。例えば。 NSString * title = [[resultsArray objectAtIndex:0] objectForKey:@ "title"]; ' –

+0

私はそれらがすべてNSStringsだと賭けていますが、その1はNSNumbersかもしれません - 辞書を印刷するとき、文字列ではないことを伝えることはできません – bshirley

答えて

3

NSDictionaryの内容を取得するには、取得する値のキーを入力する必要があります。私は:

NSString *notes = [[resultsArray objectAtIndex:0] valueForKey:@"notes"]; 
2

は、オブジェクトがクラスaのインスタンスである場合、テストこれらのいずれかを使用します-allKeysを使用して、辞書キーのNSArrayを返すことができます。これはまた、(配列のcountを取ることによって)何個あるかを知らせます。

[[resultsArray objectAtIndex:0] valueForKey:keyString]; 

:あなたはタイプを知ったら、クラスがNSObjectのサブクラスではない場合keyString代わりに使用し、その後、しかしなど@"creationdate"の1、@"notes"、ある

[[resultsArray objectAtIndex:0] objectForKey:keyString]; 

を呼び出すことができますたとえば、keystring@"id"の場合は、これを行う必要があります。

+0

Objective-C-ish' NSString * className = NSStringFromClass([yourObject class]); ' – bshirley

+0

@bshirley:良い点;私は私の答えを更新します – PengOne

関連する問題