Попытка удалить десятичную из NSString - PullRequest
0 голосов
/ 21 июля 2011

Это странно.

Разработка для 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'

Есть идеи?

Ответы [ 4 ]

2 голосов
/ 21 июля 2011

В какой-то момент вы присваиваете NSDecimalNumber для distanceFromTargetString, а не NSString. В Objective C не выполняется проверка типов во время выполнения, поэтому это полностью «законно»:

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

Приведенное выше не будет генерировать ошибок или предупреждений, пока вы не попытаетесь отправить NSString методы на string, после чего вы получите исключение (сбой), как показано выше.

Проведите аудит везде, где вы назначаете distanceFromTargetString, и везде, где вы используете NSDecimalNumber. Где-то вы пересекаете ручьи.

1 голос
/ 21 июля 2011

Вы можете попробовать:

NSInteger i = [distanceFromTargetString integerValue];
NSString s = [NSString stringWithFormat:@"%d", i];
// you got your string
1 голос
/ 21 июля 2011

Вы где-то звоните isEqualToString с NSDecimalNumber в качестве получателя. Что такое distanceFromTarget? Это NSDecimalNumber?

Первое, что должно сработать.

0 голосов
/ 21 июля 2011

Вы можете попытаться установить точку останова на линии

[distanceFromTarget setText: distanceFromTargetString];

и посмотреть, действительно ли distanceFromTargetString является NSString.

Как упоминалось выше, каким-то образом NSNumber пробралсягде-то.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...