異なるビュー コントローラーから 1 つのエンティティの異なる属性を更新しようとしています。
エンティティの人物を開いたとします。1 つのビュー コントローラーは人物の名前の電子メールなどを取得し、もう 1 つのビュー コントローラーは、次回その人物に会うときに、その人物を開いた状態で行うアクティビティを取得します。
どちらも、同じエンティティのそれぞれの属性に保存する必要があります。現状では、最初のビューコントローラー情報を新しいセルに保存することしかできません。次に、最初のビューコントローラーで保存されたセルの数に関係なく、2番目のビューコントローラー情報は1つのセルにのみ保存されます
@interface PeopleDetailViewControllerUIViewController ()
@end
@implementation PeopleDetailViewControllerUIViewController
@synthesize people;
- (NSManagedObjectContext *)managedObjectContext {
NSManagedObjectContext *context = nil;
id delegate = [[UIApplication sharedApplication] delegate];
if ([delegate performSelector:@selector(managedObjectContext)]) {
context = [delegate managedObjectContext];
}
return context;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
if (self.people) {
[self.nameTextField setText:[self.people valueForKey:@"name"]];
[self.emailTextField setText:[self.people valueForKey:@"email"]];
[self.homeTextField setText:[self.people valueForKey:@"home"]];
[self.cellTextField setText:[self.people valueForKey:@"cell"]];
[self.addressTextField setText:[self.people valueForKey:@"address"]];
[self.notesTextField setText:[self.people valueForKey:@"notes"]];
}
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#pragma mark - Table view data source
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
// Configure the cell...
return cell;
}
/*
}
- (IBAction)cancel:(id)sender {
[self dismissViewControllerAnimated:YES completion:nil];
}
- (IBAction)save:(id)sender {
NSManagedObjectContext *context = [self managedObjectContext];
// Create a new managed object
if (self.people) {
[self.people setValue:self.nameTextField.text forKey:@"name"];
[self.people setValue:self.emailTextField.text forKey:@"email"];
[self.people setValue:self.homeTextField.text forKey:@"home"];
[self.people setValue:self.cellTextField.text forKey:@"cell"];
[self.people setValue:self.addressTextField.text forKey:@"address"];
[self.people setValue:self.notesTextField.text forKey:@"notes"];
}
else{
NSManagedObject *newPeople = [NSEntityDescription insertNewObjectForEntityForName:@"People" inManagedObjectContext:context];
[newPerson setValue:self.nameTextField.text forKey:@"name"];
[newPerson setValue:self.emailTextField.text forKey:@"email"];
[newPerson setValue:self.homeTextField.text forKey:@"home"];
[newPerson setValue:self.cellTextField.text forKey:@"cell"];
[newPerson setValue:self.addressTextField.text forKey:@"address"];
[newPerson setValue:self.notesTextField.text forKey:@"notes"];
}
NSError *error = nil;
// Save the object to persistent store
if (![context save:&error]) {
NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]);
}
[self dismissViewControllerAnimated:YES completion:nil];
}