У меня есть 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];
}
Я знаю, что этот метод не является динамическим, и я всегда буду получать тип события "деннис", это просто для теста.
мои вторые методы 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;
}
обновление: как сказал офихий, я перемещаю свои линии ячеек определения из if и меняю их на:
//create cell use relation
NSArray *eventsArray = [[[[self currentPerson] events] objectEnumerator]allObjects];
Event *newEvent = [eventsArray objectAtIndex:indexPath.row];
[[cell textLabel]setText: [newEvent type]];