如何比较目标C中从NSArray转换NString?

问题描述:

我是iOS新手。而且我现在面临一个问题,一个代码如何比较目标C中从NSArray转换NString?

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时需要将文本颜色转换为红色。但它只执行一项操作。

+5

使用这样的'如果([typeString isEqualToString:@ “1”])'比较字符串 –

无需整个数组转换为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 
} 
+0

您的代码显示的错误[__NSCFNumber isEqualToString:]:无法识别的选择发送到实例0xb000000000000013 – Muju

+1

没事看我的更新,现在..以前的数组返回的数字,这是你收到错误.. – vaibhav

+0

你的代码是完美的。感谢您帮助您节省我的一天。 – Muju

尝试......

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]; 
} 

我认为你需要得到一本关于iOS编程的书并研究它。

  • 问题1:

    在第一行中创建一个NSMutableArray并将其分配给阵列。在下一行你重写数组。创建NSMutableArray完全没有意义。

  • 问题2:

    您正在使用方法valueForKey。除非您已阅读valueForKey的文档,否则您理解它,并且您有合理的理由使用valueForKey而不是objectForKey,则应使用objectForKey或subscript语法。因此无论[responseDict objectForKey:@“Type”]或更好的responseDict [@“Type”]。

  • 问题3:

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

  • 问题4:

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

  • 问题5:

    您不使用正确的循环语法使你和其他人的生活很辛苦。对于(数组中的id项)要短得多,并且运行速度比您的代码快得多。

  • 问题6:

    为什么地球上的typeString可变的?

  • 问题7:

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

  • 问题8:

    你绝对不应该在被的cellForRowAtIndexPath分析一些数据。这是可怕的。以你的responseDict为例,定义一个可以代表你的响应数据的类,将它解析成一次到适当的数据中,包括你所有的错误检查,然后cellForRowAtIndexPath可以访问数据。

+0

当我不使用if(array.count> 0)并且数组为零时,应用程序崩溃。所以为了防止崩溃,我使用if(array.count> 0)。 – Muju

+0

数组只是NSMutableArray的一个对象。 – Muju