Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IOS NSDictionary元素到NSString_Ios_Objective C_Nsstring_Nsdictionary - Fatal编程技术网

IOS NSDictionary元素到NSString

IOS 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中提取键值,字典值如下面的屏幕截图所示

我需要使用代码将键“TITLE”的值提取到NSString

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:
@trojanfoe
objectForKey:
给我一个类似
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”]和问题解决。谢谢你的详细回答。