将NSDictionary值转换为NSString

问题描述:

我想将我的字典的值转换为字符串。 我的代码:将NSDictionary值转换为NSString

NSArray *keys=[services allKeys]; 
yourLabel = [[UILabel alloc] initWithFrame:CGRectMake(146, (i*height_between_cells)+44, 40, 25)]; 
    NSString *nomber = (NSString *)[[services objectForKey:[keys objectAtIndex: i]] objectForKey:@"Nomber"]; 
    //NSString *nomberService=[[services objectForKey:[keys objectAtIndex: i]] objectForKey:@"Nomber"]; 
    [yourLabel setText:nomber]; 
    [recapView addSubview:yourLabel]; 

就像你看到的我想设置标签的文本与我dictionnary值。 当我这样做,我有一个错误:

[__NSCFNumber length]: unrecognized selector sent to instance 0x14d57fd0 

你有什么想法吗?

+0

搜索你的代码和发布代码,你必须发送一个名为消息的一部分'长度'。你在哪里使用过? –

+0

@ Unkn0wn.Bit他们可能没有调用长度。长度将被另一种他们还没有创建的方法调用。 'NSString'使用的长度如此''[services objectForKey:[keys objectAtIndex:i]] objectForKey:@“Nomber”];'更有可能返回一个'NSNumber',然后您将它传递给'NSString'这就是它要去的地方错误。如果你知道这个值是一个'NSNumber',你可以在结尾添加'stringValue'。 – Popeye

+0

然后他应该使用'[[[objectForForKey:[keysObjectAtIndex:i]] objectForKey:@“Nomber”] stringValue]'来设置NSString –

错误是因为你假设[[services objectForKey:[keys objectAtIndex: i]] objectForKey:@"Nomber"];的结果给你一个NSString,但它实际上给你一个NSNumber

使用转换只会使编译器感到高兴。它并不实际转换任何东西。

尝试这样:

NSNumber *nomber = [[services objectForKey:[keys objectAtIndex: i]] objectForKey:@"Nomber"]; 
[yourLabel setText:[nomber stringValue]]; 

或者用现代的语法,你可以这样做:

NSNumber *nomber = services[keys[i]][@"Number"]; 
yourLabel.text = [nomber stringValue]; 
+0

谢谢,这正是我所要做的。 – user3227545

NSString *nomberService=[[[services objectForKey:[keys objectAtIndex: i]] objectForKey:@"Nomber"] stringValue];