Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Core data 更新NSManagedObject不';t使用MagicalRecord调用NSFetchedResultsControllerDelegate_Core Data_Magicalrecord_Nsfetchedresultscontroller - Fatal编程技术网

Core data 更新NSManagedObject不';t使用MagicalRecord调用NSFetchedResultsControllerDelegate

Core data 更新NSManagedObject不';t使用MagicalRecord调用NSFetchedResultsControllerDelegate,core-data,magicalrecord,nsfetchedresultscontroller,Core Data,Magicalrecord,Nsfetchedresultscontroller,我有一个一对多关系的模型: Order -->> LineItem 我在UITableViewCells中显示行项目: 我使用UIPickerView更改行项目的数量 GOAL=>通过更改选择器值,可以再次重新计算小计 这里的问题是更新行项目,NSFetchedResultsController委托不调用(在这里我可以重新配置单元格并显示更新的数据)。但当我更新订单时,例如将其设置为completedNSFetchedResultsController将调用委托方法 为什么更新

我有一个一对多关系的模型:

Order -->> LineItem 
我在UITableViewCells中显示行项目:

我使用UIPickerView更改行项目的数量

GOAL=>通过更改选择器值,可以再次重新计算小计

这里的问题是更新行项目,
NSFetchedResultsController委托
不调用(在这里我可以重新配置单元格并显示更新的数据)。但当我更新订单时,例如将其设置为completed
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委托方法


FRC将只观察其直接感兴趣的对象的变化,而不观察与之相关的任何对象的变化


您应该直接使用KVO或将自己的观察配置到正在保存的上下文,并使用它来触发UI刷新。

是的,我提取了行项目并为它们设置FRC委托,而不是提取顺序。谢谢