检查索引处的NSArray对象是否为NSString或NSNumber类型

时间:2014-06-30 11:14:58

标签: ios objective-c nsarray

这是我的NSArray: (     " TAG_NAME&#34 ;,     3,     " mp4_url&#34 ;,     4,     0,     " back_tag&#34 ;,     5,     1,     " PART_ID&#34 ;,     " related_list&#34 ;,     2 )

我需要将所有数值放在另一个数组中。 我使用以下代码来检查从数组中获取的值是数字还是字符串,但它没有工作。每次我从数组中获取值为NSString。

for (int i=0; i<arr.count; i++) {

    id obj=[arr objectAtIndex:i];

    if ([obj isKindOfClass:[NSString class]])
    {
        // It's an NSString, do something with it...
        NSLog(@"its string");
    }else{

        // It's an Numerical value, do something with it...
        NSLog(@"its integer value");

    }

}

我知道数组只存储其中的一些对象,因此在获取时我会将值作为NSString(即对象)获取。但无论如何要检查存储的值是否为数值。 请有人帮帮我.. 感谢

1 个答案:

答案 0 :(得分:3)

您不能只将NSString变成NSNumber,但有些方法可以尝试从中获取数值。

这是一个选项,但您也可以查看NSNumberFormatter

如果所有数字都是整数,那么你可以做这样的事情......

// always use fast enumeration
for (NSString *string in arr) {

    NSInteger integer = [string integerValue];

    // have to check explicitly for 0 as a non-numeric would return 0 above
    if ([string isEqualToString:@"0"]
        || integer != 0) {
        // it is an integer numeric string
    } else {
        // it is a string
    }

}