Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从目标C中的NSArray转换为NSArray时,如何比较NString?_Ios_Objective C_Nsstring_Nsarray - Fatal编程技术网

Ios 从目标C中的NSArray转换为NSArray时,如何比较NString?

Ios 从目标C中的NSArray转换为NSArray时,如何比较NString?,ios,objective-c,nsstring,nsarray,Ios,Objective C,Nsstring,Nsarray,我是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 = [NSMut

我是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);
    }
 }
现在我需要比较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并将其分配给array。在下一行中覆盖数组。创建NSMutableArray完全没有意义

  • 问题2:

    您正在使用valueForKey方法。除非您已经阅读了valueForKey的文档,理解了它,并且有充分的理由使用valueForKey而不是objectForKey,否则您应该使用objectForKey或下标语法。所以要么[responsedit objectForKey:@“Type”],要么更好的responsedit[@“Type”]

  • 问题3:

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

  • 问题4:

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

  • 问题5:

    由于没有使用正确的循环语法,您和其他人的生活都非常艰难。for(数组中的id项)比您的代码短得多,运行速度也快得多

  • 问题6:

    究竟为什么typeString是可变的

  • 问题7:

    您似乎不知道数组中存储了什么类型的对象。它是一个数字,还是一个字符串?你应该真正了解这一点,并进行相应的比较

  • 问题8:

    您绝对不应该解析CellForRowatineXpath中的某些数据。那太可怕了。使用您的responseDict,定义一个可以表示您的响应数据的类,将其解析为适当的数据,包括您进行的所有错误检查,然后CellForRowatineXpath可以访问数据


像这样使用
if([typeString IsequalString:@“1”])
来比较字符串您的代码显示错误[\u NSCFNumber IsequalString:]:未识别的选择器发送到实例0xB000000013好的,请查看我的更新,现在..以前的数组返回的数字是y您得到的错误..您的代码是完美的。谢谢你帮我保存我的一天。当我不使用if(array.count>0)且数组为零时,应用程序会崩溃。因此,为了防止is崩溃,我使用if(array.count>0)。数组只是NSMutableArray的一个对象。
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
}