0

.My アプリはサーバーから連絡先をダウンロードします。すべての連絡先がダウンロードされたら、それらをCoreDataに保存して関係を維持したいと考えていますNSManagedObject eventEntity Contacts一気に保存できるか心配です。NSArray 内のすべての連絡先contactsWebを Core Data にプッシュするか、次のようにそれぞれを保存する必要があります。

NSManagedObjectContext *context = [(AppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];

for(int i = 0; [contactsWeb count]; i++){

NSManagedObject *contact = [NSEntityDescription insertNewObjectForEntityForName:@"Contacts" inManagedObjectContext:context];

[contact setValue:[contactsWeb objectAtIndex:i] forKey:@"text"];
[contact setValue:[NSDate date] forKey:@"date"];

[[event mutableSetValueForKey:@"toContacts"]addObject:contact];
 NSError *error;
if(![context save:&error]){
    NSLog(@"%@", [error localizedDescription]);
}
}
4

1 に答える 1

0

管理対象オブジェクトのコンテキストを保存すると、コンテキスト内のすべての変更が永続ストア (ネストされたコンテキストの場合は親コンテキスト) に保存されます。そのため、すべての連絡先が挿入され、関係が設定された後、コンテキストを「一度に」保存できます (また保存する必要があります)。

注意:管理対象オブジェクトのサブクラスを作成し、エンティティ用に作成する場合ContactsEventコードは次のように簡略化できます。

Contacts *contact = [NSEntityDescription insertNewObjectForEntityForName:@"Contacts" inManagedObjectContext:context];
contact.text = [contactsWeb objectAtIndex:i];
contact.date = [NSDate date];
[event addToContactsObject:contact];

管理対象オブジェクトのサブクラスは、Xcode で作成できます。Core Data モデル エディタでエンティティを選択し、メニューから [エディタ] -> [NSManagedObject サブクラスを作成] を選択します。

于 2013-01-07T17:17:27.780 に答える