[英]My code is skipping the if end the else in Xcode obj-c
我的問題在這里,我有一個帶有多個if和else的代碼,但是代碼沒有輸入任何內容,我也不知道為什么。 這里:
id msgWithFormat;
NSArray *allkeys = [dict allKeys];
NSMutableString *msg = [[NSMutableString alloc]init];
for (int i=0; i<allkeys.count; i++) {
NSMutableString *listOfErrors = [[NSMutableString alloc]init];
//NSMutableString *lbl = [[NSMutableString alloc]init];
NSMutableDictionary *currentError = [dict objectForKey:allkeys[i]];
NSMutableDictionary *isGroup;
if ([currentError isKindOfClass:[NSMutableDictionary class]]) {
isGroup = [currentError objectForKey:@"group"];
}
if ([isGroup count] == 0) {
NSArray *lbls;
if ([currentError isKindOfClass:[NSMutableDictionary class]]) {
lbls = [currentError objectForKey:@"msg"];
[listOfErrors appendString:[currentError objectForKey:@"label"]];
[listOfErrors appendString:@":"];
for (int j=0; j < lbls.count; j++) {
[listOfErrors appendString:lbls[j]];
[listOfErrors appendString:@","];
}
[msg appendString:listOfErrors];
[msg appendString:@"\n"];
} else if([[dict objectForKey:@"groupError"] isEqualToString:@"group 1"]) {
lbls = [currentError objectForKey:@"msg"];
[listOfErrors appendString:[currentError objectForKey:@"label"]];
[listOfErrors appendString:@":"];
for (int j=0; j < lbls.count; j++) {
[listOfErrors appendString:lbls[j]];
[listOfErrors appendString:@","];
}
[msg appendString:listOfErrors];
[msg appendString:@"\n"];
}
dict是我已經檢查過的NSMutableDictionary,但是它不會進入isGroup if,並且也不會進入值check if of group I是否不知道原因。
這是字典:
dict __NSDictionaryM * 3 key/value pairs 0x799f5390
有什么幫助嗎?
編輯1:
我在這一行中設置了一個斷點,
if ([currentError isKindOfClass:[NSMutableDictionary class]]) {
它通過它,不進入,否則就從所有這些代碼中跳出:
if ([currentError isKindOfClass:[NSMutableDictionary class]]) {
lbls = [currentError objectForKey:@"msg"];
[listOfErrors appendString:[currentError objectForKey:@"label"]];
[listOfErrors appendString:@":"];
for (int j=0; j < lbls.count; j++) {
[listOfErrors appendString:lbls[j]];
[listOfErrors appendString:@","];
}
[msg appendString:listOfErrors];
[msg appendString:@"\n"];
} else if([[dict objectForKey:@"groupError"] isEqualToString:@"group 1"]) {
// lbls = [currentError objectFo rKey:@"msg"];
//
// [listOfErrors appendString:[currentError objectForKey:@"label"]];
// [listOfErrors appendString:@":"];
//
// for (int j=0; j < lbls.count; j++) {
// [listOfErrors appendString:lbls[j]];
// [listOfErrors appendString:@","];
//
// }
// [msg appendString:listOfErrors];
// [msg appendString:@"\n"];
//
}
我建議檢查的最簡單的解釋是,“ if”和“ else if”中的條件在運行時是否都為假。
對於給定的輸入字典,兩者都可能為假,這似乎是很合理的。
我建議斷點每個條件,或將每個條件下檢查的值記錄到控制台。 如果這些給定值的“ if”表達式都不為真,那么“ else if”表達式都為真!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.