我有一个具有这种一对多关系的模型:
Order -->> LineItem
我在UITableViewCells中显示LineItems:
我使用UIPickerView来改变LineItems的数量。
GOAL => 通过更改选择器值,再次重新计算subTotal。
问题出在这里,通过更新lineItem,NSFetchedResultsController Delegate
不调用(我可以再次重新配置单元格并显示更新的数据)。但是当我更新Order时,例如将其设置为已完成NSFetchedResultsController
将调用委托方法。
为什么通过更新lineItem不会影响要调用的委托方法?
我使用magicalRecord,这是我得到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委托方法吗?
答案 0 :(得分:1)
FRC只会观察对其直接感兴趣的对象的更改,而不是与它们相关的任何对象。
您应该直接使用KVO或要保存的上下文配置您自己的观察,并使用它来触发UI刷新。