Проверьте, нет ли объекта NSInteger
Я надеюсь проверить тип объекта, для NSString:
[theObject isKindOfClass:[NSString class]]
он работает, но для NSInteger
[theObject isKindOfClass:[NSInteger class]]
сообщит об ошибке
Приветствуем любой комментарий
Ответы
Ответ 1
Используйте класс NSNumber:
if ([obj isKindOfClass:[NSNumber class]]) { ... }
NSNumber Наследование из NSValue: NSObject
NSInteger
Используется для описания целого числа.
#if __LP64__ || TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
typedef long NSInteger;
#else
typedef int NSInteger;
#endif
Ответ 2
NSInteger
не является классом Objective-C. Это typedef для интегрального типа. Таким образом, объект никогда не будет NSInteger.
Что вы ищете, это класс NSNumber
, который является классом Objective-C.
Ответ 3
NSInteger не является типом объекта. Это базовый тип данных. Оформить заказ Справочная информация о базовых типах данных, чтобы узнать, как это определено.
Ответ 4
//checked
+ (BOOL)CGFloatIsCanNSInteger:(CGFloat)floatValue inAccuracy:(NSString*)accuracy {
NSString *strFloat = [NSString stringWithFormat:accuracy, floatValue];
NSRange dotRange = [strFloat rangeOfCharacterFromSet:[NSCharacterSet characterSetWithCharactersInString:@"."]];
NSUInteger dotLocation = dotRange.location + 1;
NSString *subStrFromDot = [strFloat substringFromIndex:dotLocation];
NSCharacterSet *myCharSet = [NSCharacterSet characterSetWithCharactersInString:@"123456789"];
for (int i = 0; i < [subStrFromDot length]; i++) {
unichar c = [subStrFromDot characterAtIndex:i];
if ([myCharSet characterIsMember:c]) {
return NO;
}
}
return YES;
}
//checked