0

コアデータエンティティの属性にデータを追加しようとしています。

Contents of contentArray: (
036,
038,
040,
041,
043,
044,
044,
043,
042,
041,
041,
042,
042,
042,
042,
041,
041,
042,
043,
044,
045,
046,
047,
048,
050,
053,
054,
056,
059,
060,
057,
055,
053,
051,
048,
046,
043,
035,
034,
033,
032,
031,
032
}

上記は、可変配列のサンプルコンテンツです。以下に示すように、NSManagedObjectContext変数に追加しようとしています。

  for (int i =0;i<[contentArray count];i++){
            int a =[[contentArray objectAtIndex:i] intValue];
            NSLog(@"value:%d",a);
            [newManagedObject setValue:[NSNumber numberWithInteger:a ] forKey:@"timeStamp"];
            // Save the context.
            NSError *error = nil;
            if (![context save:&error]) {  

            NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
            abort();
   }
  } 

iOS用のデフォルトのコアデータアプリを操作して、テーブルにタイムスタンプ値を追加しました。セルは以前の値で上書きされています。私の実装に何か問題がありますか?コンテンツ配列のデータを上書きするのではなく、データを追加するにはどうすればよいですか?どんな助けでも大歓迎です。ありがとう

4

2 に答える 2

2

ループを通過するたびに、新しい管理対象オブジェクトを作成 (およびコンテキストに追加) する必要があります。常に同じオブジェクトを使用している限り、データが上書きされても不思議ではありません。

一方、おそらく保存コードはループの外に置くべきです。

于 2012-05-10T11:10:51.990 に答える
0

これは、データをコア データに格納する基本的な方法です。これを確認して、コードに合わせて変更してください。

NSManagedObjectContext *context = [self managedObjectContext];
countryObject=[NSEntityDescription
                          insertNewObjectForEntityForName:@"Country" 
                          inManagedObjectContext:context]; 
countryObject.city = @"New york";
countryObject.people = [NSString stringWithFormat:@"%@",[yourArray objectAtIndex:i]];
NSError *error;
if (![context save:&error]) {
    NSLog(@"Whoops, couldn't save: %@", [error localizedDescription]);
}
于 2012-05-10T11:16:11.597 に答える