【发布时间】:2016-11-13 15:04:08
【问题描述】:
我正在尝试执行 if/else 语句来检查数组是否为空。似乎第一个条件已评估但未满足,因此它移至 else 并执行。这是屏幕上的输出(iOS):
您看到的名称在那里是因为执行了 else 语句。但是,还有其他 3 个分数为 0 的用户名没有显示出来。这是相关的条件:
NSArray *keyArray = [yy allKeys];
for(NSString *keyd in keyArray) {
NSLog(@"yy objectforkey *********: %@", [[yy objectForKey:keyd] debugDescription]);
if(![yy objectForKey:keyd]){
NSMutableDictionary* entry = [NSMutableDictionary new];
NSLog(@"inside yy object for key count 0 *****####***##*#*#*#");
[tableData addObject:keyd];
[matchesForUser addObject:@"0"];
entry[@"username"] = keyd;
entry[@"matches"] = @"0";
[entries addObject:entry];
}
else {
NSMutableArray *locs = [[NSMutableArray alloc] initWithArray:[yy objectForKey:keyd]];
//NSString *outerouter;
//NSNumber *outeroutermatches = [NSNumber numberWithInt:0];
for(NSDictionary *outterar in locs) {
NSMutableDictionary* entry = [NSMutableDictionary new];
NSLog(@"%@ outtererjar descriptiong ##(#(#(#(#(#(#(#(#(#((#", [outterar description]);
entry[@"username"] = keyd;
entry[@"matches"] = [outterar valueForKey:@"groupmatches"];
if([entries count] > 0) {
for(int counter = 0; counter < [entries count]; counter++) {
if([[[entries objectAtIndex:counter] valueForKey:@"matches"] intValue] < [[entry valueForKey:@"matches"] intValue]) {
NSLog(@"GETTING IN IFFFFFF ABOOOVVEEEEE ******8888888*********");
//NSMutableDictionary *stud = [[NSMutableDictionary alloc] initWithObjectsAndKeys:keyd, @"username", nil];
[matchesForUser addObject:[outterar objectForKey:@"groupmatches"]];
[tableData addObject:keyd];
NSLog(@"%@ WHAT IS ENTRIES>>>!!!!??!?!?!", [[entries objectAtIndex:counter] valueForKey:@"username"]);
if([keyd isEqualToString:[[entries objectAtIndex:counter] valueForKey:@"username"]]) {
NSLog(@"GETTING IN IFFFFFF ******8888888*********");
[entries removeObjectAtIndex:counter];
[entries insertObject:entry atIndex:counter];
}
else {
[entries addObject:entry];
}
}
else {
[entries addObject:entry];
}
}
}
else {
[matchesForUser addObject:[outterar objectForKey:@"groupmatches"]];
[tableData addObject:keyd];
[entries addObject:entry];
}
}
}
}
_tableViewScore 和tableData 都是用于填充UIScrollView(s) 的数组。每次找到空对象(它们是数组)时,if 语句中的代码都应该执行。 else 运行,这就是为什么您会看到带有分数的用户名,但是当数组为 null 时似乎没有执行 if。
当我输出我正在检查的对象时,一个空对象如下所示:
yy objectforkey *********: <__NSArrayM 0x170454cd0>(
)
我只需要能够识别其中一个对象何时是这样的。谢谢!
【问题讨论】:
-
我能解释一下 -1 吗?
标签: ios objective-c arrays null conditional