【发布时间】:2013-12-29 20:33:54
【问题描述】:
在我的应用中,我有两个实体 Items 和 Lists,其中项目可以属于一个列表,而列表可以有多个项目。
当我创建一个Lists 托管对象并将其分配给它的关系时,无法通过其关系检索项目对象(我之前创建的)。当我在控制台中打印出来时,我得到了这个:
正如您在第一张图片中看到的那样,has_items 确实包含一个项目,并且打印出 has_items 返回 null(打印在图片底部)。但是,当我刷新我的应用程序并尝试再次访问它时,它工作正常,但现在我得到一个关系错误的东西,我知道这不是错误或错误的东西,应该是这样。
请看图二,看看刷新后打印的变化。
我该如何解决这个问题? (问题的重新表述:能够将对象保存到关系属性,并在保存上下文后检索对象而不刷新应用程序)。
编辑:代码在这里
List *newList = [NSEntityDescription insertNewObjectForEntityForName:@"List" inManagedObjectContext:context];
[newList setValue:obj[@"list_name"] forKey:@"list_name"];
[newList addHas_membersObject:self.currentMember];
[newList setValue:@"NO" forKey:@"current_list"];
[newList setValue:@"YES" forKey:@"is_synced"];
[newList setValue:obj[@"objectId"] forKey:@"object_identifier"];
[context insertObject:newList];
[self saveContext:context WithCompletion:^ {NSLog(@"completion being handled");
Items *newItem = [NSEntityDescription insertNewObjectForEntityForName:@"Items" inManagedObjectContext:context];
[newItem setValue:item[@"item_detail"] forKey:@"item_detail"];
[newItem setValue:@"YES" forKey:@"is_synced"];
[newItem setValue:item.createdAt forKey:@"date_added"];
[newItem setValue:item[@"is_checked"] forKey:@"is_checked"];
[newItem setValue:newList forKey:@"belong_to_list"];
[context insertObject:newItem];
[newList addHas_itemsObject:newItem];
NSError *error;
[context save:&error];
NSLog(@"item saved");
}
【问题讨论】:
-
图片太小,看不到。还要添加一些有用的代码。谢谢。
-
@flexaddicted 首先感谢您的编辑。如果您想查看图片控件,请单击并在另一个选项卡中打开。图片宽度很大。如果还有问题我会上传新的。至于我现在尝试添加的代码。谢谢
-
因此,保存后您应该执行
[newList valueForKey:@"has_items"],您将能够访问您的新对象。届时将提供NSSet的项目。能否请您格式化代码?谢谢。 -
@flexaddicted 啊啊啊啊啊啊我永远也学不会!我的应用程序正在核心数据和云之间同步。在某些时候,如果用户是旧的但重新安装了我想恢复他的数据的应用程序。猜猜是什么问题?我放错了列表数组,并且在恢复数据时没有对其进行初始化。 掌心 无论如何,谢谢你,我不会让你离开我想这是你第二次帮助我。输入答案,我会检查它是否正确。
-
不客气。而且不是问题。您可以只回复自己的答案,以便其他人可以看到您找到的解决方案。谢谢。
标签: ios objective-c core-data