2011-07-21 63 views
0

這是奇怪的。試圖從NSString中刪除小數點

爲iPhone開發我有一個NSString:

distanceFromTargetString = @"6178266.000000" 
// this is not actually code, but a value taken from elsewhere. It is a proper NSString though. 

當我使用這個

NSArray *listItems = [distanceFromTargetString componentsSeparatedByString:@"."]; 
distanceFromTargetString = [listItems objectAtIndex:0]; 

或本

[distanceFromTarget setText: distanceFromTargetString]; 

我得到這樣的

-[NSDecimalNumber isEqualToString:]: unrecognized selector sent to instance 0x1cac40 
2011-07-21 14:29:24.226 AssassinBeta[7230:707] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSDecimalNumber isEqualToString:]: unrecognized selector sent to instance 0x1cac40' 

任何想法?

+1

做你嘗試'[distanceFromTargetString integerValue]'? – 2011-07-21 13:38:41

+0

謝謝文斯。這是做什麼的? –

+0

我認爲你在正確的軌道上,但這種方法不起作用。嘗試發佈它作爲答案雖然:) –

回答

1

你可以嘗試:

NSInteger i = [distanceFromTargetString integerValue]; 
NSString s = [NSString stringWithFormat:@"%d", i]; 
// you got your string 
1

你是在某個地方撥打isEqualToStringNSDecimalNumber作爲接收器。什麼是distanceFromTarget?這是一個NSDecimalNumber

第一件事應該工作。

+0

distanceFromTarget是一個UILabel –

2

在某些時候,您將NSDecimalNumber指定爲distanceFromTargetString而非NSString。有目標C作業沒有運行時類型檢查,所以這是完全「合法」:

NSDecimalNumber *number = [NSDecimalNumber ....]; 
[array addObject:number]; 
NSString *string = [array lastObject]; 

,直到您嘗試發送NSString方法string以上會產生任何錯誤或警告,在這一點你會得到一個異常(崩潰),就像你上面顯示的那樣。

對您指定的任何地方distanceFromTargetString以及您使用的任何地方NSDecimalNumber進行審覈。你穿過溪流的地方。

0

你可以嘗試在該行

[distanceFromTarget setText: distanceFromTargetString]; 

設置一個斷點,看看distanceFromTargetString實際上是一個NSString

如上所述,不知何故NSNumber已經潛入某處。