Ios 如何从NSDictionary中获取属性?

Ios 如何从NSDictionary中获取属性?,ios,cocoa-touch,touchjson,Ios,Cocoa Touch,Touchjson,我有一个Web服务,它以JSON格式将数据返回给我的客户机应用程序。然后我使用将这些数据反序列化到NSDictionary中。伟大的字典包含一个键“results”,results包含一个对象数组 这些对象在打印到日志(即 NSLog(@"Results Contents: %@",[resultsArray objectAtIndex:0 ]); 产出: Results Contents: { creationdate = "2011-06-29 22:03:24";

我有一个Web服务,它以JSON格式将数据返回给我的客户机应用程序。然后我使用将这些数据反序列化到NSDictionary中。伟大的字典包含一个键“results”,results包含一个对象数组

这些对象在打印到日志(即

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;
}
我无法确定这个对象是什么类型。如何从该对象获取属性和值


谢谢

若要测试对象是否是类
a
的实例,请使用以下选项之一:

[yourObject isKindOfClass:[a class]]

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

NSString *className = NSStringFromClass([yourObject class]); 
要获取对象的类名,可以使用以下选项之一:

[yourObject isKindOfClass:[a class]]

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

NSString *className = NSStringFromClass([yourObject class]); 
对于
NSDictionary
,可以使用
-allKeys
返回字典键的
NSArray
。这还将让您知道有多少个(通过获取数组的
计数
)。一旦你知道了类型,你可以打电话

[[resultsArray objectAtIndex:0] objectForKey:keyString];
其中,
keyString
@“creationdate”
@“notes”
等中的一个。但是,如果该类不是
NSObject
的子类,则改用:

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

例如,您可能需要对等于
@“id”
键串执行此操作。若要测试对象是否是类
a
的实例,请使用以下选项之一:

[yourObject isKindOfClass:[a class]]

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

NSString *className = NSStringFromClass([yourObject class]); 
要获取对象的类名,可以使用以下选项之一:

[yourObject isKindOfClass:[a class]]

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

NSString *className = NSStringFromClass([yourObject class]); 
对于
NSDictionary
,可以使用
-allKeys
返回字典键的
NSArray
。这还将让您知道有多少个(通过获取数组的
计数
)。一旦你知道了类型,你可以打电话

[[resultsArray objectAtIndex:0] objectForKey:keyString];
其中,
keyString
@“creationdate”
@“notes”
等中的一个。但是,如果该类不是
NSObject
的子类,则改用:

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

例如,您可能需要对等于
@“id”
键串执行此操作,才能获取
NSDictionary
的内容,您必须为要检索的值提供键。即:

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

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

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

这是一本
NSDictionary
你在
结果中看到的。您可以通过查看对象和键对来判断。例如,“users_id”是键,
1
是对象。它是一个NSDictionary。使用
-objectForKey:
获取每个。例如,
NSString*title=[[resultsArray objectAtIndex:0]objectForKey:@“title”]
我打赌它们都是NSString,但1可能是NSNumber-当打印字典时,如果字符串中有空格,引号会放在字符串周围,如果没有空格,引号就不会放在字符串周围(因此,您无法判断1是/不是字符串。第一个更可能是NSDate。请记住,
%@
调用对象上的
-description
,而描述是一个
NSString
。非常感谢大家。我没有意识到我正在查看的是一个NSDictionary的表示形式,它是一个
NSDictionary
Results
中查看。您可以通过查看对象和键对来判断。例如,“users\u id”是键,
1
是对象。它是一个NSDictionary。使用
-objectForKey:
来获取每一个。例如
NSString*title=[[resultsArray objectAtIndex:0]objectForKey:@“title”];
我打赌它们都是NSstring,但1可能是NSNumbers——当打印字典时,如果字符串中有空格,引号会放在字符串的周围,如果没有空格,引号就不会放在字符串的周围(因此,您无法判断1是/不是字符串。第一个更可能是NSDate。请记住,
%@
调用对象上的
-description
,而描述是一个
NSString
。非常感谢大家。我没有意识到我正在查看NSDictionary的表示以保持其客观性-C-ish
NSString*className=NSStringFromClass([yourObject class]);
保持它的客观性-C-ish
NSString*className=NSStringFromClass([yourObject class]);