2009-07-09 40 views
60

我想從int轉換爲字符串,但我有麻煩。我通過調試器跟蹤執行,字符串'myT'獲取'sum'的值,但'if'語句不能正確工作,如果'sum'是10,11,12。我不應該使用基本的int類型來存儲數字嗎?另外,我嘗試的兩種方法(請參見注釋掉的代碼)都無法遵循'if'語句的真正路徑。謝謝!如何從int轉換爲字符串在目標c:示例代碼

int x = [my1 intValue]; 
    int y = [my2 intValue]; 
    int sum = x+y; 
    //myT = [NSString stringWithFormat:@"%d", sum]; 
    myT = [[NSNumber numberWithInt:sum] stringValue]; 

    if([email protected]"10" || [email protected]"11" || [email protected]"12") 
     action = @"numGreaterThanNine"; 
+6

有你把整數轉換成字符串理由嗎?這將是容易得多寫你的測試爲'如果(總和> = 10 &&和<= 12)` – Alex 2009-07-09 16:17:13

+1

如果答案波紋管迷惑你,看看此相關的問題:http://stackoverflow.com/questions/3414644/how-to-convert-integer-to-string-in-objective-c-closed – Florin 2010-12-15 13:18:27

回答

30

註釋掉的版本是這樣做的比較正確的做法。

如果您使用的字符串,你要比較字符串的地址的==運營商(他們在內存就分配),而不是字符串的值。這是非常偶然的有用(表示你有相同的字符串對象),但99%的時間要比較的值,你不喜歡這樣:

if([myT isEqualToString:@"10"] || [myT isEqualToString:@"11"] || [myT isEqualToString:@"12"]) 
+0

輕微的錯字,丟失:在第二次比較中。 – marcc 2009-07-09 16:07:10

12

==不應該被用來在你的if比較的對象。對於NSString使用isEqualToString:來比較它們。

156

如果你只是需要一個int來正如你提到的字符串,我發現最簡單的方法是如下這樣做:

[NSString stringWithFormat:@"%d",numberYouAreTryingToConvert] 
6
int val1 = [textBox1.text integerValue]; 
int val2 = [textBox2.text integerValue]; 

int resultValue = val1 * val2; 

textBox3.text = [NSString stringWithFormat: @"%d", resultValue]; 
136

您可以用文字,它更緊湊。

NSString* myString = [@(17) stringValue]; 

(盒爲NSNumber,並使用其stringValue方法)

3

簡單地轉換intNSString 使用:

int x=10; 

    NSString *strX=[NSString stringWithFormat:@"%d",x];