我有 2 个实体(和两个 tableViews)我的第一个实体名称是 Person,第二个是 Event,在我的第一个 tableView 中有人的名字,第二个是他们的事件,我在 Person 和 Event 之间有一对多的关系。我只希望当用户点击其中一个名称时,第二个 tableView 将向他显示该人的事件(类型)。问题是我得到空单元格。
这就是我添加新事件的方式:
- (void) addEventControllerDidSave{
NSManagedObjectContext* context = [self managedObjectContext];
Event *newEvent = (Event *)[NSEntityDescription insertNewObjectForEntityForName:@"Event" inManagedObjectContext:context];
[newEvent setType:@"dennis"];
[currentPerson addEventsObject:newEvent];
NSError *error;
if (![[self managedObjectContext] save:&error])
{
NSLog(@"Problem saving: %@", [error localizedDescription]);
}
[self dismissViewControllerAnimated:YES completion:nil];
}
我知道这种方法不是动态的,我总是会得到事件类型“dennis”,这只是为了测试。
我的第二个 tableView 方法:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [[[self currentPerson] events] count];
}
最重要的方法我认为问题出在此处(或在保存方法中):
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"eventsCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
if (nil == cell)
{
NSEnumerator *enumerator = [[[self currentPerson] events] objectEnumerator];
Event *event = [[enumerator nextObject]objectAtIndexPath:indexPath];
[[cell textLabel]setText:[event type]];
}
return cell;
}
更新: 正如ophychius所说,我将我定义的细胞系移出if并将它们更改为:
//create cell use relation
NSArray *eventsArray = [[[[self currentPerson] events] objectEnumerator]allObjects];
Event *newEvent = [eventsArray objectAtIndex:indexPath.row];
[[cell textLabel]setText: [newEvent type]];