2010-12-05 1 views
0

私はコアデータでテストを行っていて、おおよその配列を持っています。 230レコード私のデータベースに格納しようとします。残念ながら、最後のレコードだけがデータベースに格納されているようです。なぜ私はwhileループが正しくループしているのか分かりません。最後のレコードのみがデータベースに格納されているのはなぜですか?

また、1つのフィールド(nrField)がインデックスに登録されている場合は、数値を追加する必要がありますか?これはデータベースにレコードを追加すると自動的に行われますか? nrFieldsは、各レコードに格納されている固有のカウンタです。

//=========LOOP ARRAY AND INSERT RECORDS INTO DB==============// 
while (eOF != 99999) { 

    qNr = [myArray objectAtIndex:xx]; 
    eOF = [qNr intValue]; 
    xx = xx++; 

    if (eOF != 99999) { 

     qDifficulties = [myArray objectAtIndex:xx]; 
     int iDiff = [qDifficulties intValue]; 
     [famQuizInfo setValue:[NSNumber numberWithInt:iDiff] forKey:@"qDiff"]; 
     xx = xx++; 

     // No action for Category as it is not included in the database any longer 
     xx = xx++; // Calculate +1 to compensate for non existing Category 

     [famQuizInfo setValue:[myArray objectAtIndex:xx] forKey:@"question"]; 
     xx = xx++; 

     [famQuizInfo setValue:[myArray objectAtIndex:xx] forKey:@"qRightAnswer"]; 
     xx = xx++; 

     [famQuizInfo setValue:[myArray objectAtIndex:xx] forKey:@"qWrongAnswer1"]; 
     xx = xx++; 

     [famQuizInfo setValue:[myArray objectAtIndex:xx] forKey:@"qWrongAnswer2"]; 
     [famQuizInfo setValue:[NSNumber numberWithInt:0] forKey:@"qNrAccess"]; 
     [famQuizInfo setValue:[NSDate date] forKey:@"qRegDate"]; 


     //NSError *error; 
     if (![qContext save:&error]) { 
      NSLog(@"Whoops, couldn't save: %@", [error localizedDescription]); 
     } 

     xx = xx++; 
     NSLog(@"xx: %i", xx); 

    } 
} 

答えて

2

問題は、レコードを更新してループ内で上書きしてしまうことです。ループの周りに毎回新しいインスタンスfamQuizInfoを作成する必要があります。

関連する問題