2011-04-18 58 views
0

如何將數字轉換爲字符串。錯誤地將數字轉換爲字符串

這裏是我的代碼:

NSDictionary *myDict = [NSDictionary dictionaryWithObjectsAndKeys:@"1100", @"myKey",nil]; 

NSString *myData = [NSString stringWithFormat:@"%d", [myDict valueForKey:@"myKey"]]; 

在myData的輸出是不是1100而是一些隨機數。這裏有什麼問題。

回答

4

您存儲的號碼已經以字符串的形式存在(請注意引號:@「...」)。

你可能需要的是這樣的:

NSDictionary *myDict = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInteger:1100], @"myKey",nil]; 

NSString *myData = [NSString stringWithFormat:@"%d", [[myDict objectForKey:@"myKey"] integerValue]]; 

下面,我們將向該代碼一步一步:通過[NSNumber numberWithInteger:1100]

  • 我們創建一個

    1. 我們創建一個NSNumber對象持有1100 NSDictionary對象與所述號碼對象作爲鍵的值@"myKey"
    2. 我們通過[myDict objectForKey:@"myKey"]myDict請求鍵值@"myKey"的值,該值將返回先前傳遞給它的NSNumber實例。
    3. 我們然後請求整數值(NSInteger,是繞INT /長的抽象)經由[… integerValue]
    4. 所接收的NSNumber實例我們通過NSInteger的值[NSString stringWithFormat:@"%d", …]

    或者,也可以跳過步驟4並將@「%d」更改爲@「%@」,它將打印相同的內容。至少在簡單的整數值的情況下。對於浮點值,您不希望直接通過@「%@」打印NSNumbers,因爲您會失去對小數精度顯示的控制。

    注意,我們使用objectForKey:,不valueForKey:,這是爲什麼:https://stackoverflow.com/search?q=valueForKey%20objectForKey


    你可以通過改變你的代碼,這也犯了同樣的字符串:

    NSDictionary *myDict = [NSDictionary dictionaryWithObjectsAndKeys:@"1100", @"myKey",nil]; 
    
    NSString *myData = [NSString stringWithFormat:@"%@", [myDict objectForKey:@"myKey"]]; 
    

    的原因雖然,爲什麼不想這樣做:(通常來說)不正確的做法是將數字**(或幾乎任何其他非文本的)值存儲爲字符串**。

  • 2

    %d是在字典內部插入@"1100"NSString)時用於整數值的說明符。

    更改說明符%@,它會工作..或者如果你想要放置數字本身,你將不得不用一個Obj-C對象(如NSNumber)在字典中包裝它。

    0

    其他答案都是正確的,但...

    你似乎想:​​

    NSDictionary *myDict = [NSDictionary dictionaryWithObjectsAndKeys:@"1100", @"myKey",nil]; 
    NSString *myData = [myDict valueForKey:@"myKey"]; 
    

    有沒有必要做+stringWithFormat:舞蹈,因爲你已經保存的值作爲一個字符串(@"..."意味着它是一個字符串)。