IOS NSDictionary元素到NSString
嗨,我正试图从NSDictionary中提取键值,字典值如下面的屏幕截图所示 我需要使用代码将键“TITLE”的值提取到NSStringIOS NSDictionary元素到NSString,ios,objective-c,nsstring,nsdictionary,Ios,Objective C,Nsstring,Nsdictionary,嗨,我正试图从NSDictionary中提取键值,字典值如下面的屏幕截图所示 我需要使用代码将键“TITLE”的值提取到NSString NSDictionary* tmp = [self getDBRequest:req]; NSString * title =[tmp valueForKey:@"TITLE"]; 但是给这个值 上面的代码有什么问题吗 编辑: NSLog(@"%@", tmp); 给出输出 2015-12-31 11:04:52.530 SimpleTable[610
NSDictionary* tmp = [self getDBRequest:req];
NSString * title =[tmp valueForKey:@"TITLE"];
但是给这个值
上面的代码有什么问题吗
编辑:
NSLog(@"%@", tmp);
给出输出
2015-12-31 11:04:52.530 SimpleTable[610:10059] (
{
DESCRIPTION = "30% OFF ON NEW ";
"IMAGE_URL" = "crowd.jpg";
TITLE = "GET 30% OFF";
}
)
Edit2
实际使用NSString*title=[tmp valueForKey:@“title]”的结果代码>我必须替换NSMutableArray的一个元素
代码呢
NSMutableArray *array = [[NSMutableArray alloc]init];
[array addObject:@"Eezy"];
[array addObject:@"Tutorials"];
NSDictionary* tmp = [self getDBRequest:req];
NSString * title =[tmp valueForKey:@"TITLE"];
[array replaceObjectAtIndex:0 withObject:title];
给我数组修改了一些东西,比如下面的屏幕截图
试试下面的代码
NSDictionary *tmp = @{@"DESCRIPTION" : @"30 OFF ON NEW",@"IMAGE_URL" : @"crowd.jpg",@"TITLE" : @"GET 30% OFF"};
//NSDictionary* tmp = [self getDBRequest:req];
NSArray *keyArray = [tmp allKeys];
NSString * title = [keyArray objectAtIndex:[keyArray indexOfObject:@"TITLE"]];//[keyArray objectAtIndex:0];
[array replaceObjectAtIndex:0 withObject:title];
请看问题中的第一张图片,内容转储的第一行显示“1对象”
还可以查看NSLog
的输出,注意括号((
&)
)围绕大括号({
&}
),大括号依次围绕键/值对
这两者都告诉您,tmp
并不像您所想的那样引用一个NSDictionary
,而是一个包含单个元素的NSArray
,并且该元素是一个NSDictionary
现在,当您对字典数组调用valueForKey:
时,它会对集合中的每个字典执行键查找,并返回和数组结果
这就是为什么当您查看问题中的第二个图像时,您会看到其内容转储也以“1对象”开头-title
引用的数组包含一个元素,即字符串
这也是为什么,如注释中所述,使用objectForKey:
代替valueForKey:
会导致错误-该方法不在数组上操作,因此会产生发送到实例的无法识别的选择器
HTH您能告诉我们,什么是NSLog(@“%@”,tmp);打印到控制台?以什么方式得到的不是您期望的?代码工作正常;虽然您希望objectForKey:
,但不希望valueForKey:
@trojanfoeobjectForKey:
给我一个类似2015-12-31 11:15:11.297 SimpleTable[649:12131]***的异常,原因是未捕获的异常“NSInvalidArgumentException”,终止应用程序-[\u nscharray objectForKey:]:无法识别的选择器发送到实例0x7fd09941a240'
@Haris,没有意义;你确定在那条线上吗?您显示的是一个字典,而不是数组。[temp allKeys]此返回字典所有键的NSArray“temp”和[temp allValues]将返回字典的所有值这如何回答问题?他需要字典的“键”他有键(@“TITLE”
)。您刚刚在NSDictionary
上演示了一个随机操作。这一点都没有帮助。你是对的,我的数据就像这里解释的那样,我更改了行NSString*title=[tmp valueForKey:@“title”]代码>至NSArray*title=[tmp valueForKey:@“title”]代码>和问题解决。谢谢你的详细回答。