gpt4 book ai didi

iphone - iOS/iPhone CoreData 关系

转载 作者:行者123 更新时间:2023-11-28 20:46:58 25 4
gpt4 key购买 nike

我一直在努力寻找一个很好的 CoreData 教程,该教程侧重于具有一对多和多对多关系的更高级的数据库。根据我的阅读,CoreData 隐藏了通常处于多对多关系中的中间表。但我的问题更多是关于如何使用 CoreData 设置一对多关系。

我的数据库的一部分由类别表和项目表组成。一个类别可以有很多项。

在我的程序中,我到达了用户选择一个类别的地步,然后弹出一个 ListView ,显示应属于该类别的所有项目。

我可以完美地向表中添加一个项目,当我尝试向与类别有关系的表中添加一个项目时出现问题/崩溃。

是不是要先将item完整保存到数据库,然后再重新抓取并设置关系?

部分代码:

[项目.m]

@interface ITEM :  NSManagedObject  
{
}

@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) CATEGORY * category;

@end

[/item.m]

[类别.m]

@interface CATEGORY :  NSManagedObject  
{
}

@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSSet* items;

@end


@interface CATEGORY (CoreDataGeneratedAccessors)
- (void)addItemObject:(item *)value;
- (void)removeItemObject:(item *)value;
- (void)addItems:(NSSet *)value;
- (void)removeItems:(NSSet *)value;

@end

[/category.m]

CoreDataGeneratedAccessors 都不是我实现的,我假设它们已经创建并隐藏了。

我尝试以两种方式设置关系,一次来自 CATEGORY,一次来自 ITEMIE。 [[自类别] addItemObject:[自项目]];并且 [[自身元素] setCategory:[自身类别]];

都没有用...我收到这样的错误:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Illegal attempt to establish a relationship 'category' between objects in different contexts (source = <NSManagedObject: 0x614b660> (entity: item; id: 0x61558f0 <x-coredata:///item/tF691713B-18B1-4D28-93CC-40327353C08F3> ; data: {
category = nil;
name = TestName;

}) , destination = <CATEGORY: 0x4d55c20> (entity: category; id: 0x4d55050 <x-coredata://188D1CD9-6CC0-47EF-9C2A-A5DDDB1FAA24/category/p1> ; data: {
items = "<relationship fault: 0x4da4800 'items'>";
name = "Test Category";
}))'

所以我想问题是:我哪里出错了,是否有一个很好的教程来介绍 CoreData 示例,这些示例具有多个表并且实际上具有一对多关系(什么是链接)?

最佳答案

'Illegal attempt to establish a relationship 'category' between objects in different contexts

这是你的问题。你不能在不同的上下文之间建立关系。

您可以重构您的代码,使其仅使用一个 NSManagedObjectContext 或 merge在为它分配类别之前,将该项目放入“主要上下文”。

关于iphone - iOS/iPhone CoreData 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5151530/

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