【发布时间】:2014-07-04 19:17:51
【问题描述】:
我有一个具有这种一对多关系的模型:
Order -->> LineItem
我在 UITableViewCells 中显示 LineItems:
我使用 UIPickerView 来改变 LineItems 的数量。
GOAL=>通过更改选择器值,重新计算 subTotal。
问题在于通过更新 lineItem,NSFetchedResultsController Delegate 不会调用(我可以再次重新配置单元格并显示更新的数据)。但是当我更新订单时,例如将其设置为已完成 NSFetchedResultsController 将调用委托方法。
为什么更新 lineItem 不会影响要调用的委托方法?
我使用magicRecord,这是我获得NSFetchedResultsController的方法
- (NSFetchedResultsController *)fetchedResultsController
{
if (_fetchedResultsController != nil) {
return _fetchedResultsController;
}
else
{
_fetchedResultsController = [Order fetchAllSortedBy:@"orderDate" ascending:YES withPredicate:nil groupBy:nil delegate:self];
}
return _fetchedResultsController;
}
我设置表格视图的方式:
ConfigureCellBlock configureCell = ^(OrderDetailsCell *cell, LineItem *lineItem)
{
[cell configureForLineItem:lineItem];
};
//set fetchedresults controller delegate
Order *order = [[self.fetchedResultsController fetchedObjects] lastObject];
NSArray *lineItems = [order.lineItems allObjects];
self.ordersDataSource = [[ArrayDataSource alloc] initWithItems:lineItems cellIdentifier:@"lineItemCell" configureCellBlock:configureCell];
self.tableView.dataSource = self.ordersDataSource;
配置单元:
- (void)configureForLineItem:(LineItem *)lineItem
{
self.menuItemName.text = lineItem.menuItemName;
self.price.text = [lineItem.unitPrice stringValue];
self.quantity.text = [lineItem.quantity stringValue];
self.totalPrice.text = [lineItem.totalPrice stringValue];
self.pickerController.model = lineItem;
self.picker.delegate = self.pickerController;
self.picker.dataSource = self.pickerController;
[self.picker setSelectedNumber:lineItem.quantity];
}
获取 obj1 然后更新 obj3 会导致调用 NSFRC 委托方法吗?
【问题讨论】:
标签: core-data magicalrecord nsfetchedresultscontroller