iphone - 在核心数据中保存一对多关系时出现问题

标签 iphone objective-c ios core-data

我一直在尝试将核心数据实现到我的应用程序中,最近,尝试设置一对多关系。我设置的关系如下

NSMutableSet *todoObjects = [[NSMutableSet alloc] init];
for (int i = 0; i < [allTodolistsData count]; i++) {
    NSDictionary *dictionary = [allTodolistsData objectAtIndex:i];
    TodolistObject *tempTodolist = [[TodolistObject alloc] initWithDict:dictionary];
    [todoObjects addObject:[Todolists newTodolist:tempTodolist withContext:appDelegate.context]];
    [tempTodolist release];
}

[project setTodolists:todoObjects];

项目变量是一个 NSManagedObject,并且 setTodolists: 方法是自动生成的,用于设置项目的待办事项列表。由于该项目与待办事项列表集具有一对多关系,因此我传入一个 NSMutableSet。然而,当我这样做时,我收到以下错误:

-[__NSArrayM isEqualToSet:]:无法识别的选择器发送到实例 0xa325d60

我似乎找不到任何遇到此问题的人。有什么想法吗?

最佳答案

您必须从 NSManagedObject 获取关系的可变集并将新对象添加到其中,因此:

NSMutableSet *todoObjects = (NSMutableSet*)[project mutableSetValueForKey:@"todoLists"];

// Switch your for loop to use fast-enumaration
for (NSDictionary *dictionary in allTodolistsData) {
    TodolistObject *tempTodolist = [[TodolistObject alloc] initWithDict:dictionary];
    [todoObjects addObject:[Todolists newTodolist:tempTodolist withContext:appDelegate.context]];
    [tempTodolist release];
}

// Save project in the same context where you created the object

关于iphone - 在核心数据中保存一对多关系时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13018667/

相关文章:

ios - cocoa 键值观察字典中的键/条目

ios - 为什么使 UIApplicationDelegate 中的 window 属性为可选而不是隐式解包可选?

objective-c - 将 UINavigationBar 和 UIToolbar 添加到模态 UITableViewController

iphone - 是否可以通过编程方式在 iPhone 中启用热点模式?

iphone - 如何通过点击 detailDiclosureButton 获取详细信息

iphone - 可滚动的网格状 View

iphone - iPhone 上的动画 "crawling text"

ios - [__NSArrayM objectAtIndex :]: index 9223372036854775807 beyond bounds [0 . 。 13]'

ios - ARC 如何处理方法内的局部变量?

ios - 在 UICollectionView 和 UITableView 中优化预加载/预取图像