0

xcdatamodeld を使用した ios アプリケーションがあり、一部のデータを更新したいので、そのためのコードが必要です

挿入用のコードがあります

NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
NSEntityDescription *entity = [[self.fetchedResultsController fetchRequest] entity];
NSManagedObject *newManagedObject = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context];
[newManagedObject setValue:txtName.text forKey:@"name"];   [newManagedObject setValue:txtid.text forKey:@"id"];     
// Save the context.
NSError *error = nil;
if (![context save:&error]) {      
    NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
    abort();
}

そして削除のために

NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
    [context deleteObject:[self.fetchedResultsController objectAtIndexPath:indexPath]];

しかし、データを更新するためのコードが必要です。

4

2 に答える 2

1

NSFetchRequest を使用してデータを選択するだけです (場合によっては記述子と述語を並べ替えます)。そのフェッチ リクエストの結果を含む配列が返されます。これらの結果はすべて、選択したエンティティのタイプのものであり、後はそれらのサブクラスのプロパティを更新するだけです。例は次のようになります。

NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntity:@"Car"];
request.predicate = [NSPredicate predicateWithFormat:@"make == %@", @"Ford"]; // make is an attribute of the Car entity

NSArray *fetchResults = [self.fetchedResultsController.managedObjectContext executeFetchRequest:request error:nil];
Car *car = [fetchResults objectAtIndex:0]; // First result
car.make = @"Chevrolet";

これで、Core Data バックエンドが自動的に更新され、メーカーが Chevrolet の Car オブジェクトが作成されます。

于 2012-06-12T18:17:49.070 に答える
0
   NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
    NSEntityDescription *entity = [[self.fetchedResultsController fetchRequest] entity];       
    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    [request setEntity:entity];     

    request.predicate = [NSPredicate predicateWithFormat:@"id == %@", strId];        
    NSArray *fetchResults = [self.fetchedResultsController.managedObjectContext executeFetchRequest:request error:nil];       

    [fetchResults setValue:txtName.text forKey:@"name"];
    [fetchResults setValue:txtPhone.text forKey:@"phone"];
    [fetchResults setValue:txtEmail.text forKey:@"email"];

    NSError *error = nil;
    if (![context save:&error]) {        
        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
        abort();
    }
于 2012-06-12T19:27:20.870 に答える