Ich versuche eine if/else-Anweisung auszuführen, bei der geprüft wird, ob ein Array leer ist. Es scheint so, als ob die erste Bedingung ausgewertet und nicht erfüllt wird, und so bewegt sie sich zum else und führt sie aus. Dies ist die Ausgabe auf dem Bildschirm (iOS):Wenn die Bedingung erfüllt ist, aber der Inhalt der if-Anweisung scheinbar nicht ausgeführt wird
Der Name, den Sie sehen, gibt es, da die else-Anweisung ausgeführt wird. Es gibt jedoch 3 andere Benutzernamen mit Werten von 0, die nicht angezeigt werden. Hier ist die relevante Bedingung:
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
und tableData
sind beide Arrays, die verwendet werden die UIScrollView
(n) zu füllen. Der Code in der if-Anweisung sollte jedes Mal ausgeführt werden, wenn ein leeres Objekt gefunden wird (sie sind Arrays). Der else läuft, deshalb sehen Sie den Benutzernamen mit dem Ergebnis, aber es scheint, als ob das if nicht ausgeführt wird, wenn das Array null ist.
Wenn ich Ausgang das Objekt, das ich für bin Überprüfung, ein leeres Objekt sieht wie folgt aus:
yy objectforkey *********: <__NSArrayM 0x170454cd0>(
)
Ich muss nur in der Lage sein, wenn eines der Objekte zu identifizieren, wie das ist. Vielen Dank!
kann ich eine Erklärung für die -1 erhalten? – ewizard