Ios 增量核心数据属性
我的应用程序中存在以下关系:Ios 增量核心数据属性,ios,objective-c,core-data,Ios,Objective C,Core Data,我的应用程序中存在以下关系: Product->ProductOrder您的代码有许多问题 首先,您需要不同的托管对象上下文是否有特定的原因?如果没有,则删除该部分。请记住,您可以使用访问每个托管对象的上下文 product.managedObjectContext; 第二,您正在使用objectid,这实际上只有在跨上下文传递对象时才有必要。在您的方法中,您可以从product中提取ID,然后调用objectWithID将其取回。这完全没有道理 第三,您需要一个很好的理由来拥有这个Produ
Product->ProductOrder您的代码有许多问题 首先,您需要不同的托管对象上下文是否有特定的原因?如果没有,则删除该部分。请记住,您可以使用访问每个托管对象的上下文
product.managedObjectContext;
第二,您正在使用objectid,这实际上只有在跨上下文传递对象时才有必要。在您的方法中,您可以从product
中提取ID,然后调用objectWithID
将其取回。这完全没有道理
第三,您需要一个很好的理由来拥有这个ProductOrder
实体。即使您没有告诉我们,我们也假设这是必要的,因为您希望在订单中包括不同数量的产品,以及订单号。但是,您选择的名称非常混乱。我们称之为项
您的方案现在应该如下所示:
Product <---->> Item <<------> Order
非常感谢,如果我使用FRC,代码会有所不同吗?:)
for (Product *prod in [self.fetchedResultsController fetchedObjects]) {
[[[DataManager sharedInstance] backgroundManagedObjectContext] performBlock:^{
ProductOrder *prodOrder = [ProductOrder addProductToOrderWithProduct:prod inManagedObjectContext:[[DataManager sharedInstance] backgroundManagedObjectContext]];
Order *order = [Order addOrderedProductToOrderWithOrderedProduct:prodOrder inManagedObjectContext:[[DataManager sharedInstance] backgroundManagedObjectContext]];
NSInteger amount = [order.orderNumber integerValue];
amount++;
order.orderNumber = [NSString stringWithFormat:@"Order %@", [NSNumber numberWithInteger:amount]];
[[DataManager sharedInstance] saveBackgroundContext];
[[DataManager sharedInstance] saveMasterContext];
}];
}
product.managedObjectContext;
Product <---->> Item <<------> Order
// number of sections
fetchedObjects.count;
// title for section
Order *order = fetchedObjects[section];
order.name;
// number of rows in section
Order *order = fetchedObjects[section];
order.items.count;
// row data
Order *order = fetchedObjects[section];
NSArray *items = [order.items sortedArrayUsingSortDescriptors:
@[[NSSortDescriptor sortDescriptorWithKey:@"sequenceNumber" ascending:YES]]];
Item *item = items[indexPath.row];
item.product.name;