如何从NSDictionary中获取属性?

时间:2011-06-30 23:26:37

标签: ios cocoa-touch touchjson

我有一个web服务,它以JSON的形式将数据返回给我的客户端应用程序。我使用TouchJson然后将此数据反序列化为NSDictionary。大。字典包含一个键,“结果”,结果包含一个NSArray对象。

打印到日志时,这些对象看起来像这样

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;
}

我无法确定此对象的类型。如何从此对象获取属性和值?

谢谢!

2 个答案:

答案 0 :(得分:3)

要获取NSDictionary的内容,您必须提供要检索的值的键。即:

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

答案 1 :(得分:2)

要测试object是否是类a的实例,请使用以下方法之一:

[yourObject isKindOfClass:[a class]]

[yourObject isMemberOfClass:[a class]]

要获取对象的类名,您可以使用以下方法之一:

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

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

对于NSDictionary,您可以使用-allKeys返回NSArray字典键。这也会让你知道有多少(通过获取数组的count)。一旦知道了类型,就可以打电话给

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

其中keyString@"creationdate"@"notes"等之一。但是,如果该类不是NSObject的子类,则改为使用:

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

例如,您可能需要在keystring等于@"id"的情况下执行此操作。