2

Product エンティティと Cart エンティティの間に 1 対多の関係があります。

ユーザーは、カートから製品を削除する機会が必要です。

私は次のように製品を取得します:

         // Fetch request for "Product":
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Product"];

// Fetch only products for the cart:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"inCart = %@", self.cart];
[fetchRequest setPredicate:predicate]; 


NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"navn" ascending:YES];
[fetchRequest setSortDescriptors:@[sortDescriptor]];

self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:_theManagedObjectContext sectionNameKeyPath:nil cacheName:nil];
_fetchedResultsController.delegate = self;

テーブルビューにデータを入力します。

Product *prod = (Product *)[self.fetchedResultsController objectAtIndexPath:indexPath];

テーブルビューにはボタンがあり、タップすると現在の製品が削除されます...「製品の削除メソッド」に次のコードがあります

-(void)RemoveFromCart:(UIButton *)sender {

    UITableViewCell *cell = (UITableViewCell *)sender.superview;
    NSIndexPath *indexPath = [_Table indexPathForCell:cell];

    Product *prod = (Product *)[self.fetchedResultsController objectAtIndexPath:indexPath];


    /*_cart is retrieved when the user pushes the add to cart button, in another    viewcontroller, a cart object is then returned and passed to the cart viewcontroller */
    NSMutableSet *mutableSet = [NSMutableSet setWithSet:_cart.products];

        [mutableSet removeObject:prod];
        _cart.products = mutableSet;



    [self saveCurrentContext:_theManagedObjectContext];


    [_Table reloadData];




}

しかし、メソッドが起動されても何も起こりません..製品は関係から削除されません。どうすればこれを修正できますか。私のコードは明らかにどこかで間違っています。

4

2 に答える 2

5

カートから製品を削除するには、次のいずれかを使用できます

product.inCart = nil;

また

[_cart removeProductsObject:product];

(逆の関係が適切に設定されている場合、両方の行は同等です。)

于 2013-06-11T11:21:19.467 に答える