gpt4 book ai didi

xcode - Cocoa:如何避免核心数据重复关系?

转载 作者:行者123 更新时间:2023-12-03 17:14:41 25 4
gpt4 key购买 nike

我有这些实体:

  • 产品实体
    • 姓名
    • 订单 [ProductsOrderRelationship]
  • 订单实体
    • 产品 [ProductsOrderRelationship]
  • 产品订单关系
    • 订单 [OrderEntity]
    • 产品 [ProductsEntity]
    • 数量

现在,我想编辑现有订单。我有可用产品和购物车的列表。

现在我想将这些可用产品添加到购物车。

代码必须检查产品是否存在,因此只会增加数量。

但是,到目前为止,它只是添加更多关系..

让我分享一段代码!该界面左侧有一个包含可用产品的列表,右侧有一个包含购物车(订单实体)的列表。两者都有链接到我的代码的数组 Controller 。然后我有这个 Action :

- (IBAction)addSelectedProducts:(id)sender {

NSArray *firstSelectedProducts = [availableProductsController selectedObjects];
//Objects selected in the array controller
NSMutableArray *selectedProducts = [[NSMutableArray alloc] initWithCapacity:1];
//Here I will filter the repeated ones
NSMutableSet *newProducts = [NSMutableSet set];
//This is the final value to change in the current order entry.
NSMutableSet *oldProducts = [orderManagedObject valueForKey:@"products"];
//This is the old value I will change.

//Here we filter every repeated entries:
if ( [firstSelectedProducts count] > 0 ) {
for (id object in firstSelectedProducts) {
if (![oldProducts containsObject:object]) {
[selectedProducts addObject:object];
}
}
}

//Here we create objects in the relationship entity:
for (int i = 0; i < [selectedProducts count]; i++) {

// Create new relationship.

NSManagedObject *newProductObject = [
NSEntityDescription
insertNewObjectForEntityForName:@"ProductsOrderRelationship"
inManagedObjectContext:managedObjectContext
];

[newProductObject setValue:[selectedProducts objectAtIndex:i] forKey:@"product"];
[newProductObject setValue:orderManagedObject forKey:@"order"];

[newProducts addObject:newProductObject];

[newProductObject release];

}

[newProducts unionSet:oldProducts];
//Join old products and new products.
[orderManagedObject setValue:newProducts forKey:@"products"];
//Re-set the value.

//(... release stuff here)
}

我找不到针对此特定问题的指南。有什么建议吗?

最佳答案

我猜测 firstSelectedProducts 包含 ProductsEntity 对象,而 oldProducts 包含 ProductsOrderRelationship 对象。如果这是真的,问题就在于……

if (![oldProducts containsObject:object]) {

...永远不会匹配任何内容。

(您所说的 ProductsOrderRelationship 通常称为 LineItem。更改类的名称及其关联变量可能会使逻辑更清晰。)

关于xcode - Cocoa:如何避免核心数据重复关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10535521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com