2016-07-20 6 views
-1

Ich versuche, die Daten von zwei Arrays zu holen und Daten aus dem dritten Array unter Verwendung dieses Index zu erhalten. Bis zur zweiten Iteration lief alles gut. TagsDarray und TagsArray hat jeweils 3 Arrays und jedes Array hat ihre jeweilige Anzahl (im Grunde ist es Array von Arrays). Pretargarray hat seine jeweilige Anzahl.- [__ NSArrayI objectAtIndex:]: Index 2 über Grenzen [0 .. 1]

if(tagsArray!=(id)[NSNull null]) 
     { 
      for(int i=0;i<[tagsArray count];i++) 
      { 
       for(int j=0;j<[[tagIdsArray objectAtIndex:i] count];j++){ 
        if([[tagIdsArray objectAtIndex:i]objectAtIndex:j]==[preTagArray objectAtIndex:j]) 
        { 
         selectedTagCompleteArray = [[tagsArray objectAtIndex:i]objectAtIndex:j]; 
        } 
       } 
      } 
     } 

Beispiel tagsArray objectAtIndex: i count = 4,5,20 tagsIdsArray objectAtIndex: i count = 4,10,8 pretagArryCount = 15

+1

Haben tagIdsArray und tagsArray dieselbe Anzahl? Wenn nicht, stürzt dein Code ab. –

+0

Sieht aus wie eine sehr komplizierte Datenstruktur. – Droppy

+0

Sie haben meine Frage immer noch nicht beantwortet. Was ist die Anzahl der tagIdsArray? –

Antwort

0

ist es das, was Sie suchen ?

0

Es ist schwierig zu verstehen, was Sie mit Ihrem Code erreichen möchten. Der Fehler, den Sie bekommen, ist, weil Sie versuchen, auf einen Index auf NSArray zuzugreifen, der nicht existiert. Es ist schwierig, eine Implementierung bereitzustellen, ohne genau zu wissen, welche Ergebnisse Sie erreichen möchten. Eine Möglichkeit, den Absturz zu vermeiden, besteht jedoch darin, die Anzahl der NSArray s vorobjectAtIndex: zu überprüfen. Etwas wie folgt aus:

if ([tagsIdsArray count] == [preTagArray count]) { 
    //the arrays match and you can safely iterate 
} 
else { 
    //the array sizes do not match and will crash if you iterate 
} 

Wenn die NSArray zählt nicht gleich sind, dann wahrscheinlich ist es nicht sinnvoll, über ihnen zu wechseln, eine Operation auszuführen. Ich würde darüber nachdenken, warum die Arrays nicht übereinstimmen. Offensichtlich hat eines Ihrer Arrays nur 2 Werte, da es durch Index 0 und 1 zu kommen scheint. Sie können versuchen, NSLog() die Array-Anzahl für jedes Array (oder loggen Sie die objectAtIndex:) in Ihren Schleifen und dies wird wahrscheinlich den Schuldigen auftauchen.

Verwandte Themen