我很难让核心数据在我的应用程序中正常工作。我非常满意表视图控制器中的核心数据,甚至单视图应用程序中的核心数据。但是,我无法让我的程序在多个视图控制器中正常运行。

我已经阅读了Zarra的核心数据书,并购买了iOS的专业核心数据,并阅读了列出的项目,但是每个项目都在TableView控制器中使用。除了iOS专业核心数据中的shapes应用程序。

是否有人知道任何示例(代码或教程),这些示例将演示如何使用多个视图控制器和核心数据来编写程序?

我想做的是在第一个按钮上(而不是tableview单元格上)有按钮,这些按钮将连接到下一个viewController。在第二个视图控制器上,我想用第一实体集合中的信息填充该信息,

所以到目前为止,第一个实体是这样的:


  • houseName(属性)
  • 住客(关系)


  • personName(属性)
  • 家庭(关系)

  • 住户>家庭(一对多)
    {
    ...
    int i = //house selected on previous view controller;
    NSManagedObject *people = [[self sortOccupants] objectAtIndex:i];
    textField01.text = [NSString stringWithFormat:@"%@",[[people valueForKey:@"personName"]description]];
    }
    

    排序乘员看起来像这样:
    -(NSArray *)sortOccupants
    {
    NSSortDescriptor *sortPeopleInHouse = [[NSSortDescriptor alloc] initWithKey:@"personName" ascending:YES];
    NSArray *sortDescriptors = [NSArray arrayWithObjects:sortPeopleInHouse, nil];
    return [[(NSSet *)[house valueForKey:@"occupants"] allObjects] sortedArrayUsingDescriptors:sortDescriptors];
    }
    

    任何想法都很棒,但是如果您能指出示例代码来说明这一点,我将非常感激。

    谢谢,

    最佳答案

    我将采用的方法是为实体生成NSManagedObject子类(使其更具可读性和类型安全性)。

    然后,我将在第二个视图控制器中创建一个新的init方法。 initWithHouse :(房屋*)房屋或其他东西:

    @property (nonatomic, strong) House  * currentHouse;
    @property (nonatomic, strong) NSArray * sortedOccupants; // Array of People objects
    
    -(id) initWithHouse:(House *)house
    {
      if (self = [super init])
      {
          // Managed Object Context available from [currentHouse managedObjectContext]
          currentHouse = house;
          sortedOccupants = [self sortOccupants:house.occupants];
      }
      return self;
    }
    
    -(NSArray *)sortOccupants: (NSSet *)occupants
    {
        NSSortDescriptor *sortPeopleInHouse = [[NSSortDescriptor alloc] initWithKey:@"personName" ascending:YES];
        NSArray *sortDescriptors = [NSArray arrayWithObjects:sortPeopleInHouse, nil];
    
        return [occupants allObjects] sortedArrayUsingDescriptors:sortDescriptors];
    }
    

    希望能有所帮助。

    10-02 14:00
    查看更多