В какой-то момент вы присваиваете NSDecimalNumber
для distanceFromTargetString
, а не NSString
. В Objective C не выполняется проверка типов во время выполнения, поэтому это полностью «законно»:
NSDecimalNumber *number = [NSDecimalNumber ....];
[array addObject:number];
NSString *string = [array lastObject];
Приведенное выше не будет генерировать ошибок или предупреждений, пока вы не попытаетесь отправить NSString
методы на string
, после чего вы получите исключение (сбой), как показано выше.
Проведите аудит везде, где вы назначаете distanceFromTargetString
, и везде, где вы используете NSDecimalNumber
. Где-то вы пересекаете ручьи.