Ios 如何从NSDictionary中获取属性?
我有一个Web服务,它以JSON格式将数据返回给我的客户机应用程序。然后我使用将这些数据反序列化到NSDictionary中。伟大的字典包含一个键“results”,results包含一个对象数组 这些对象在打印到日志(即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";
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-ishNSString*className=NSStringFromClass([yourObject class]);
保持它的客观性-C-ishNSString*className=NSStringFromClass([yourObject class]);