2016-04-18 12 views
0

私の問題はいくつかのifsとelseでコードがありますが、コードに何も入力されず、なぜわかりません。ここで:私のコードはifをスキップしていますが、elseはXcodeのelseを終了しますobj-c

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に入ると値チェックにもないことはありません。

dict __NSDictionaryM * 3 key/value pairs 0x799f5390 

すべてのヘルプ:ここ

はdictのでしょうか?

EDIT1:私は、この行にブレークポイントを置いている

 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"]; 
//     
      } 
+1

NSMutableString * listOfErrorsにブレークポイントを設定してもブレークしませんか? –

+1

ブレークポイントを設定しましたか?もしそうなら、実行はどこで終了するのですか? – PeejWeej

+0

はい、そこにブレークはifsだけスキップし、はい私はブレークポイントを設定しましたが、isKindOfClassを飛び越しています –

答えて

1

最も単純な説明私は、 "if"と "else if"の両方の条件が実行時にfalseと評価されるかどうかを確認することをお勧めします。

与えられた入力辞書に対して、両方が誤っている可能性は非常に高いようです。

各条件のブレークポイントを指定するか、各条件の検査中の値をコンソールに記録することをお勧めします。 "if"のどちらの式も真ではなく、それらの与えられた値の "else if"式もない場合は、あなたの答えがあります!

関連する問題