好的,所以我对iOS仍然很陌生并且对一些事情感到困惑。 首先,这是我的实体......
我已经拥有的数据明智的是Fruit(Apple)和Source(Tree)。它们都保存在数据库中。
接下来我想添加一个橙色,但与“树”有关系。所以我正在使用这个:
Fruit *fruit = (Fruit *)[NSEntityDescription insertNewObjectForEntityForName:@"Fruit" inManagedObjectContext:managedObjectContext];
fruit.fruitName = @"Orange";
NSSet *test = [NSSet setWithObject:fruit];
[_source addSourceFruit:test];
NSLog(@"4");
fruit.fruitSource = _source;
(_ source是'Tree',我在Source实体上对'Tree'执行了一个获取请求到一个数组,然后使用objectAtIndex:0(Tree)并将它分配给一个朝向源实体的点。
data = [managedObjectContext executeFetchRequest:request error:&error];
Source *_source = [data objectAtIndex:0];
和访问方法:
- (void)addSourceFruitObject:(Fruit *)value;
- (void)removeSourceFruitObject:(Fruit *)value;
- (void)addSourceFruit:(NSSet *)values;
- (void)removeSourceFruit:(NSSet *)values;
我找到了一个与捆绑有关的答案,但我对它们并不完全确定。 我已经读过这个'https://developer.apple.com/library/mac/#documentation/CoreFOundation/Conceptual/CFBundles/AboutBundles/AboutBundles.html'和'https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdAccessorMethods.html',但我似乎并没有把它精彩地抓住它。
编辑:错误是
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSSet intersectsSet:]: set argument is not an NSSet'
*** First throw call stack:
答案 0 :(得分:3)
我相信您通过替换sourceFruit
集来混淆Core Data。核心数据维持反向关系。这意味着您只需为其设置fruit.fruitSource = _source;
即可了解对象的连接方式。您可以使用[_source addSourceFruitObject:fruit];
代替,但这似乎不那么简洁。
(旁白:避免对局部变量使用_name
命名方式是一个好主意。使用该形式作为支持属性的实例变量已成为一种标准。)