У меня есть сценарий, который я подозреваю, очень распространенный, я нашел различные идеи в ответах на другие подобные вопросы, включая настройку IBOutlets, передачу NSmanagedobjects в качестве свойств и просто использование одного контроллера представления, но обмен местами, но я неясно, какую из них лучше всего реализовать для моего решения.
У меня есть приложение для iOS / iphone с типичной моделью. UITabBarController, содержащий несколько UINavigationControllers.
В одном из контроллеров навигации у меня есть контроллер представления с табличным представлением в нем. Этот tableView заполняется из извлеченного основного объекта Data, называемого «тегами». Когда я устанавливаю tableView с помощью UIBarButtonItem (Add), кнопка добавления должна работать следующим образом: мне нужно создать новый объект «tag» для этой сущности, заполнить объект некоторыми известными данными, а затем предложить пользователю выполнить детализацию. вниз на 3 уровня классификации (Регион -> область -> тема), чтобы добраться до объекта темы. Затем мне нужно добавить этот объект 'topic' в отношение оригинального недавно добавленного объекта 'tag' (3 просмотра дальше вниз по стеку). - Надеюсь, это ясно.
(есть много кода, я не уверен, какие биты представить, поэтому сейчас я описываю его с основным фрагментом, во что бы то ни стало, дайте мне знать любой конкретный код, который вы хотели бы видеть.)
- (void)addTag {
NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
NSEntityDescription *entity = [[self.fetchedResultsController fetchRequest] entity];
NSManagedObject *newManagedObject = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context];
[newManagedObject setValue:@"(untitled)" forKey:@"tagID"];
NSError *error;
if (![context save:&error])
NSLog(@"Error saving entity: %@", [error localizedDescription]);
ChooseRegion *aView = [[[ChooseRegion alloc] init] autorelease];
aView.theTag = newManagedObject;
[self.navigationController pushViewController:aView animated:YES];
}
Вы можете видеть, что я создал объект, установил значение для одного из его свойств, сохранил его и передал объект следующему представлению (chooseRegion), которое является первым из трех представлений. в каждом коде didSelectRowAtIndexPath передает выбранную строку и этот объект «тег» в следующее представление, я не уверен, правильно ли это, потому что я не уверен, что делать, когда я получаю объект темы в третьем представлении? ?? я потерялся.
Всегда более чем один способ снять шкуру с кошки, но с какого подхода я должен бороться с этим. Должен ли я передавать объект «тег» вперед и сохранять его в третьем представлении или передавать обратно выбранную тему и сохранять в исходном представлении, в котором был создан объект «тег»?
Большое спасибо заранее.