Ios 从目标C中的NSArray转换为NSArray时,如何比较NString?
我是iOS新手。我在代码中遇到了一个问题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
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
}