UIPickerView从managedObjectContext中选择实体

| 我现在正在努力解决与CoreData相关的问题: 我有一个带有标签栏的基于视图的应用程序。 前两个选项卡是显示我的CoreData中内容的视图控制器,第三个选项卡具有UIPickerView,可以在其中选择数据。 然后,第三和第二视图控制器应基于UIPickerView选择来选择正确的实体。 为了进一步说明这一点:在我的managedobjectcontext中,我有16个实体。基于ThirdViewController中的UIPickerView选择,我想使用相应的实体并更新FirstViewController和SecondViewController。 这也应该是一个持久的解决方案,以便用户可以退出应用程序,但是应该存储来自UIPickerView的选择。也许这是NSUserDefaults的东西吗? 任何帮助将不胜感激!
已邀请:
对于需要保存实体名称还是特定的托管对象,我不确定,但是在两种情况下,解决方案都是相同的:您需要在NSUserDefaults中存储引用。 要将实体存储在用户默认设置中,您只需将实体名称另存为字符串即可。所以像:
  [[NSUserDefaults standardUserDefaults] setValue:entityNameString forKey:@\"currentlySelectedEntity\"];
...并检索它:
  NSString *currentEntity=[[[NSUserDefaults standardUserDefaults] valueForKey:@\"currentlySelectedEntity\"];
如果需要保存对特定托管对象的引用,则需要保存已保存对象的托管对象ID。储蓄非常重要。在保存创建对象的上下文之前,对象ID仅具有一个临时值,该临时值将在保存时更改。如果使用临时值,则对对象的任何引用都将丢失。 保存对象ID:
  NSManagedObject *mo=[NSEntityDescription insertNewObjectForEntityForName:@\"TestEntity\" inManagedObjectContext:self.managedObjectContext];
  //... save the context
  NSManagedObjectID *moID=[mo objectID];
  NSURL *moIDURI=[moID URIRepresentation];
  [[NSUserDefaults standardUserDefaults] setValue:moIDURI forKey:@\"currentlySelectedTestObject\"];
...检索它:
  NSURL *uri=[[NSUserDefaults standardUserDefaults] valueForKey:@\"currentlySelectedTestObject\"];
  NSManagedObjectID *moID=[self.persistentStoreCoordinator managedObjectIDForURIRepresentation:uri];  
  NSManagedObject *mo=[self.managedObjectContext objectRegisteredForID:moID];
(以上代码未编译,可能包含输入错误,因此请勿仅复制并粘贴。)

要回复问题请先登录注册