2014-02-21 101 views
0

我想將我的字典的值轉換爲字符串。 我的代碼:將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 –

回答

2

錯誤是因爲你假設[[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

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