我很难让核心数据在我的应用程序中正常工作。我非常满意表视图控制器中的核心数据,甚至单视图应用程序中的核心数据。但是,我无法让我的程序在多个视图控制器中正常运行。
我已经阅读了Zarra的核心数据书,并购买了iOS的专业核心数据,并阅读了列出的项目,但是每个项目都在TableView控制器中使用。除了iOS专业核心数据中的shapes应用程序。
是否有人知道任何示例(代码或教程),这些示例将演示如何使用多个视图控制器和核心数据来编写程序?
我想做的是在第一个按钮上(而不是tableview单元格上)有按钮,这些按钮将连接到下一个viewController。在第二个视图控制器上,我想用第一实体集合中的信息填充该信息,
所以到目前为止,第一个实体是这样的:
屋
人
住户>家庭(一对多)
{
...
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];
}
希望能有所帮助。