iphone - como - ios 12
Compruebe si un objeto es NSInteger (4)
Espero comprobar el tipo de un objeto, para NSString:
[theObject isKindOfClass:[NSString class]]
funciona, pero para NSInteger
[theObject isKindOfClass:[NSInteger class]]
informará error
Bienvenido cualquier comentario
NSInteger no es un tipo de objeto. Es un tipo de base de datos. Consulte los tipos de datos de Foundation Foundation para ver cómo se define.
Utilice la clase NSNumber:
if ([obj isKindOfClass:[NSNumber class]]) { ... }
NSNumber Hereda de NSValue: NSObject
NSInteger Se utiliza para describir un número entero.
#if __LP64__ || TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
typedef long NSInteger;
#else
typedef int NSInteger;
#endif
NSInteger
no es una clase Objective-C. Es un typedef para un tipo integral. Como tal, un objeto nunca será un NSInteger.
Lo que estás buscando es la clase NSNumber
, que es una clase Objective-C.
//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