Я использую Core Data для управления Thing (s), а затем UITableViewController/UITableViewCell, чтобы представить список вещей. Однако объект Thing имеет больше данных, чем то, что я отображаю в текстовом свойстве UITableViewCell, и когда я перехожу из UITableViewController к более подробному контроллеру представления Thing, то, что я действительно хочу, является указателем на объект Thing, поэтому я может передать его следующему контроллеру представления.userData для iOS UITableViewCell
Например:
-(UITableViewCell*)tableView:(UITAbleView*)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
ENTRY_LOG;
// Ask the NSFetchedResultsController for the NSManagedUserObject at the row in question
Thing* thing = [self.fetchedResultsController objectAtIndexPath:indexPath];
// For brevity skip dequeueReusable...
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
cell.textLabel.text = thing.name;
EXIT_LOG;
return cell;
Предположим теперь, я предполагаю, что переход связан соответствующим образом:
- (void)prepareForSegue:(UIStoryboardSegue*)segue sender:(id)sender {
ENTRY_LOG;
UITableViewCell* cellSender = (UITableViewCell*)sender;
// I want to do this:
Thing* thingHandle = [cellSender someMessageToGetThingReference];
[segue.destinationViewController setThing:thing];
// and I don't want to do this
// setup NSFetchRequest and predicate to get thing where 'name = cellSender.text'
[segue.destinationViewController setThing:thing];
EXIT_LOG;
}
Если бы я мог получить indexPath, что клетка находится я мог бы использовать мой NSFetchResultsController к в по крайней мере, снова получите objectAtIndexPath, возможно, вызовите - (NSIndexPath *) indexPathForSelectedRow в prepareForSegue против UITableView и исходите оттуда.
Спасибо! Ваше решение решает все мои проблемы с UITableViewCell! –