Objective C中的NSArray转成String如何比较?

How to compair NString when it is converted from NSArray in Objective C?

我是 iOS 的新人。我在代码中遇到问题

array=[[NSMutableArray alloc] init];
        array =[responsedict valueForKey:@"Type"];
        NSLog(@"Type Array =%@",array);
 for (int i =0; i<[array count]; i++) {
    if (array.count>0)
    {
       typeString = [NSMutableString stringWithFormat:@"%@", [array objectAtIndex:i]];
        NSLog(@"Type String =%@",typeString);
    }
 }

我正在获取字符串中的值作为

Type String =1
Type String =2

现在我需要编译 cellForRowAtIndexPath 中的字符串

if ([typeString isEqual:@"1"]) {
            cell.IBTiconlbl.textColor = [UIColor blueColor];
        }
if ([typeString isEqual:@"2"]) {
            cell.IBTiconlbl.textColor = [UIColor redColor];
        }

但它只转换 readColor 中的文本颜色,而不是蓝色。字符串同时包含值 1 和 2。当字符串值为 1 时,我需要将文本颜色转换为蓝色,当字符串值为 2 时,我需要将文本颜色转换为红色。但它只执行一个操作。

试试这个...

if ([typeString isEqualToString:@"1"]) {
    cell.IBTiconlbl.textColor = [UIColor blueColor];
} else if ([typeString isEqualToString:@"2"]) {
    cell.IBTiconlbl.textColor = [UIColor redColor];
} else {
    cell.IBTiconlbl.textColor = [UIColor clearColor];
}

无需将整个数组转换为 NSString 这将节省代码优化时间,您可以通过使用 indexPath.row 检查对象并采取相应措施来执行此操作,请参见下面的代码:

if([[NSString stringWithFormat:@"%@",[array objectAtIndex:indexPath.row]] isEqualToString:@"1"]){
        cell.IBTiconlbl.textColor = [UIColor blueColor];
}else if([[NSString stringWithFormat:@"%@",[array objectAtIndex:indexPath.row]] isEqualToString:@"2"]){
        cell.IBTiconlbl.textColor = [UIColor redColor];
}else{
        // code for else part here
}

我认为你需要一本关于 iOS 编程的书并学习它。

  • 问题 1:

    在第一行中,您创建了一个 NSMutableArray 并将其分配给数组。在下一行中,您将覆盖数组。创建 NSMutableArray 完全没有意义。

  • 问题二:

    您正在使用方法 valueForKey。除非你已经阅读了 valueForKey 的文档,你理解它,并且你有正当理由使用 valueForKey 而不是 objectForKey,你应该使用 objectForKey 或下标语法。所以 [responseDict objectForKey:@"Type"] 或更好的 responseDict [@"Type"].

  • 问题三:

    您没有以任何方式检查结果,因此如果您的对象不是数组,您的应用程序很快就会崩溃。如果你将它分配给一个 NSMutableArray,那么一旦你试图修改它它就会崩溃,因为它不太可能是一个 NSMutableArray。

  • 问题四:

    “if (array.count > 0)”显然毫无意义。

  • 问题5:

    你没有使用正确的循环语法,这让你和其他人的生活变得非常艰难。 for (id item in array) 比你的代码要短得多 运行 快得多。

  • 问题 6:

    为什么 typeString 是可变的?

  • 问题七:

    你似乎不知道数组中存储的是什么对象。是数字还是字符串?你真的应该知道这一点并进行相应的比较。

  • 问题八:

    您绝对不应该解析 cellForRowAtIndexPath 中的某些数据。那太可怕了。拿你的 responseDict,定义一个可以代表你的响应数据的 class,将它 once 解析成适当的数据,包括你所有的错误检查,然后 cellForRowAtIndexPath 可以访问数据.