1

Customer、Form1、Form2 という 3 つのエンティティを持つコア データ モデルを作成しました。Customer から form1 および form2 へ、およびその逆の逆関係を設定しました。そのため、新しい顧客が作成されたら、その顧客用に form1 と form2 を作成する必要があります。私が抱えている問題は、顧客が以前に削除された後、各顧客の正しいフォーム 1 またはフォーム 2 にアクセスすることです。では、3 つのエンティティすべてからオブジェクトを適切に追加および削除するにはどうすればよいでしょうか。uitableview で複数のエンティティを操作したことがないため、すべてを正しい方法で行っているかどうか教えてください。どんな助けでも素晴らしいでしょう!

-(void) viewDidLoad  
{
// Generate a fetch request for reading from the database and set its entity property
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName: @"Customer" inManagedObjectContext: managedObjectContext];
request.entity = entity;
[entity release];

// Perform the actual fetch from the permanent store and initialize the menuItems array with the results
NSError *error = nil;

customerArray = [[managedObjectContext executeFetchRequest: request error: &error] 

[request release];
}




- (void) addItem
{
// Insert a new record in the database
Customer * customerItem = [NSEntityDescription insertNewObjectForEntityForName: @"Customer" inManagedObjectContext: managedObjectContext];
NSError *error = nil;

// Insert a new item in the table's data source
[customerArray insertObject: customerItem atIndex: 0];

[NSEntityDescription insertNewObjectForEntityForName: @"Form1" inManagedObjectContext: managedObjectContext];

[NSEntityDescription insertNewObjectForEntityForName: @"Form2" inManagedObjectContext: managedObjectContext];
[managedObjectContext save: &error];

// Insert a new row in the table
NSIndexPath *indexPath = [NSIndexPath indexPathForRow: 0 inSection: 0];
[table insertRowsAtIndexPaths: [NSArray arrayWithObject: indexPath] withRowAnimation: UITableViewRowAnimationFade];
}

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (editingStyle == UITableViewCellEditingStyleDelete)
{
    // Delete item from the context and save the context. This removes the item from the permanent store.
    [managedObjectContext deleteObject: [customerArray objectAtIndex: indexPath.row]];
    NSError *error = nil;
    [managedObjectContext save: &error];

    // Remove the item from the table's data source array
    [customerArray removeObjectAtIndex: indexPath.row];

    // Delete the item from the table itself.
    [tableView deleteRowsAtIndexPaths: [NSArray arrayWithObject: indexPath] withRowAnimation: YES];
}

}
4

1 に答える 1

1

顧客からフォーム1とフォーム2への関係を築いたように。顧客から form1 & form2 にアクセスできます。

Raywinderlich には、同じ方法でリレーションシップを実装してコア データをデモンストレーションするための優れたチュートリアルがあります。

于 2012-10-14T05:14:57.683 に答える