【问题标题】:Check if an object is NSInteger检查对象是否为 NSInteger
【发布时间】:2011-08-24 04:09:02
【问题描述】:

我希望检查对象的类型,对于 NSString:

[theObject isKindOfClass:[NSString class]]

它可以工作,但是对于 NSInteger

[theObject isKindOfClass:[NSInteger class]]

会报错

欢迎评论

【问题讨论】:

    标签: iphone objective-c cocoa-touch cocoa


    【解决方案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 不是对象类型。它是一种基础数据类型。结帐Foundation Data Types Reference 看看它是如何定义的。

        【讨论】:

          【解决方案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
          

          【讨论】:

            猜你喜欢
            • 2010-12-23
            • 2017-05-18
            • 2018-02-23
            • 1970-01-01
            • 2012-05-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多