如果我的数据库中的某个字段等于一个数字,则应在我的视图中显示一定数量的图像。
例如如果字段“星级”等于3,则应显示3个图像 (两个隐藏,3个可见)
当星级评分等于0时,以下代码有效,但出于某种原因,如果“星级”字段等于任何其他数字(例如3),则仍会显示所有5张图像?我错过了什么吗?
的.m
- (void)viewDidLoad {
[super viewDidLoad];
NSDictionary *neighbours = neighbourDetail;
NSLog(@"This is neighbours detail info %@", neighbours);
if ([[neighbourDetail objectForKey:@"star rating"] isEqual:@"0"]) {
self.pawOne.hidden = YES;
self.pawTwo.hidden = YES;
self.pawThree.hidden = YES;
self.pawFour.hidden = YES;
self.pawFive.hidden = YES;
if ([[neighbourDetail objectForKey:@"star rating"] isEqual:@"1"]) {
self.pawOne.hidden = NO;
self.pawTwo.hidden = YES;
self.pawThree.hidden = YES;
self.pawFour.hidden = YES;
self.pawFive.hidden = YES;
if ([[neighbourDetail objectForKey:@"star rating"] isEqual:@"2"]) {
self.pawOne.hidden = NO;
self.pawTwo.hidden = NO;
self.pawThree.hidden = YES;
self.pawFour.hidden = YES;
self.pawFive.hidden = YES;
if ([[neighbourDetail objectForKey:@"star rating"] isEqual:@"3"]) {
self.pawOne.hidden = NO;
self.pawTwo.hidden = NO;
self.pawThree.hidden = NO;
self.pawFour.hidden = YES;
self.pawFive.hidden = YES;
if ([[neighbourDetail objectForKey:@"star rating"] isEqual:@"4"]) {
self.pawOne.hidden = NO;
self.pawTwo.hidden = NO;
self.pawThree.hidden = NO;
self.pawFour.hidden = NO;
self.pawFive.hidden = YES;
if ([[neighbourDetail objectForKey:@"star rating"] isEqual:@"5"]) {
self.pawOne.hidden = NO;
self.pawTwo.hidden = NO;
self.pawThree.hidden = NO;
self.pawFour.hidden = NO;
self.pawFive.hidden = NO;
}
}
}
}
}
}
}
答案 0 :(得分:4)
主要问题是if
语句的嵌套不当。如果值不是@"0"
,则永远不会检查任何其他值。
正确的格式是:
if (some condition 1) {
} else if (some condition 2) {
} else if (some condition 3) {
} else {
}
但是编写代码有一种更简单的方法:
- (void)viewDidLoad {
[super viewDidLoad];
NSDictionary *neighbours = neighbourDetail;
int rating = [neighbourDetail[@"star rating"] intValue];
self.pawOne.hidden = rating == 0;
self.pawTwo.hidden = rating <= 1;
self.pawThree.hidden = rating <= 2;
self.pawFour.hidden = rating <= 3;
self.pawFive.hidden = rating <= 4;
}
如果您的pawXXX
观看次数不是数组,而是拥有5个不同的属性,那就更容易了。
答案 1 :(得分:1)
你在前一个语句中都有if语句。
如果星级为&#34; 1&#34;,则执行第一个if语句的正文。然后,在if语句中,只有在星级评分为&#34; 2&#34;时才会执行下一个if语句。但是你已经确定它已经确定了#&#34; 1&#34;。
如果您要使用一系列if语句,则需要关闭每个if语句,然后在此之后再使用单独的if语句。但是,对于这种情况,switch语句是更好的构造。将星级转换为nit并使用switch语句。