2012-12-10 110 views
2

我嘗試NSString轉換爲int,結果dpPoint:0,我想dpPoint:2轉換的NSString INT

dpPointStr = [NSString stringWithFormat:@"%@",[verifyRow valueForKey:@"default_point"]]; 
NSLog(@"dpPointStr:%@",dpPointStr); //Result dpPointStr:2 

int dpPoint = [dpPointStr intValue]; 
NSLog(@"dpPoint:%i",dpPoint); //Result dpPoint:0 
+0

我覺得你的代碼應工作。這是實際的代碼?根據引用'intValue',只有在以下情況下才會返回0:「接收方不以數字的有效小數文本表示開頭」。 – trojanfoe

+0

我會說你不使用int,去NSInteger。你應該總是使用包裝類。 –

+0

這是真的代碼![對trojanfoe] 如果我在下面寫它, NSString * str1 = @「2」; int dpPoint = [dpPointStr intValue]; NSLog(@「dpPoint:%i」,dpPoint); //結果將是dpPoint:2 – SimonKira

回答

4

在你的情況,如果值是字符串的開始/結束,你可以試試這個:

int val = [[dpPointStr stringByTrimmingCharactersInSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]] intValue]; 
+0

非常感謝!!你是對的! – SimonKira

+0

非常感謝..我試圖找出這個問題幾個小時和+1! –

+0

真的很難過,爲了從NSString中獲取數值,人們必須走到極限。 – Volomike

0
int str_len = [yourStr length]; char tmp[str_len]; 

[NSString getCString:tmp maxLength:str_len encoding:UTF8Encoding]; 

int dpPoint = atoi(tmp); 

不要忘了包括此文件:#include

我認爲這應該工作得很好。

另外,我覺得你可以從採取的intValue解決這個問題:

[verifyRow valueForKey:@"default_point"]; 

爲了符合蘋果使用NSInteger的替代,或爲valueForKey聲明甚至更好的NSNumber然後NSInteger的。

-1

轉換的NSString整數

NSString *sampleText = @"5"; 

int numValue = [sampleText intValue]; 

NSLog(@"Integer Value: %d", numValue); 
+0

弧禁止這個 –