簡體   English   中英

我的代碼正在跳過Xcode obj-c中的if end else

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM