Подтвердить что ты не робот

Проверьте, нет ли объекта NSInteger

Я надеюсь проверить тип объекта, для NSString:

[theObject isKindOfClass:[NSString class]]

он работает, но для NSInteger

[theObject isKindOfClass:[NSInteger class]]

сообщит об ошибке

Приветствуем любой комментарий

4b9b3361

Ответ 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.

Ответ 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