Может ли NSString рассматриваться как NSCFDecimal? - PullRequest
0 голосов
/ 06 мая 2011

Я хотел сравнить две строки, используя - (BOOL)isEqualToString:(NSString *)aString Эти строки являются объектами из словаря, использующего -(id)objectForKey:(id)aKey, содержащего числовые символы.

Когда я проверяю классы этих строк, используя [object class], независимо от того, как я их отбрасывал, чтобы они были NSString *, он продолжает показывать, что они являются NSCFDecimal числом, требующим сравнения с использованием ==. Если я хотел использовать isEqualToString для них, он выдает ошибку.

Может кто-нибудь объяснить, почему это происходит?

1 Ответ

0 голосов
/ 06 мая 2011

Objective-C - высокодинамичный язык. Неважно, какую переменную вы объявляете, имеет значение только время выполнения. Например:

NSString *str = [NSNumber numberWithInt:5];

str - это NSNumber.

Если вы хотите сравнить NSInteger (для примера) со строкой, вы должны сделать так:

NSInteger num = 9;
NSString *stringWithNumber = [NSString stringWithFormat:@"%d", num];
if ([stringWithNumber isEqualToString:yourString])
{ ... }
...