这里是 iOS 初学者。
给定一个具有多对多关系的实体
@class Categories;
@interface Events : NSManagedObject
@property (nonatomic, retain) NSString * title;
@property (nonatomic, retain) NSSet *categories;
@end
@interface Events (CoreDataGeneratedAccessors)
- (void)addCategoriesObject:(Categories *)value;
- (void)removeCategoriesObject:(Categories *)value;
- (void)addCategories:(NSSet *)values;
- (void)removeCategories:(NSSet *)values;
@end
相关
@interface Categories : NSManagedObject
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSManagedObject *events;
@end
并且有一些 JSON 数据来填充事件表
[{"title": "Test Exhibition", "categories": [{"name": "Exhibitions"}]}, {...}]
我应该如何格式化 JSON 数据以执行类似的操作
// Parse Events JSON
[events enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
...
Events *event = [NSEntityDescription
insertNewObjectForEntityForName:@"Events" inManagedObjectContext:context];
event.title = [obj objectForKey:@"title"];
NSSet *categories = [[[NSSet alloc] init] setByAddingObjectsFromArray:[obj objectForKey:@"categories"]];
NSLog(@"CATS %@", categories);
[event addCategories:categories];
最终让核心数据找到相关类别(已经添加到数据库中)并将其附加到事件?
此刻我得到
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFDictionary entity]: unrecognized selector sent to instance 0x893a8c0'
非常感谢任何帮助,谢谢!
最佳答案
categories
是 NSDictionaries
的 NSSet
,但是
- (void)addCategories:(NSSet *)values;
需要 NSManagedObject 的
的 NSSet
。因此,您必须从每个描述类别的字典中创建一个 NSManagedObject
,将它们添加到一个新的 NSSet
(或 NSMutableSet
),然后才可以使用新集合调用 addCategories:
。
关于iOS Core Data - 将相关数据添加到实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19292567/