В этом подходе предполагается, что вы используете UINavigationController
со стеком UIViewController
экземпляров, каждый из которых имеет экземпляр контекста управляемого объекта в составе приложения Core Data.
Установите ivar
и @property
в заголовке делегата приложения, который содержит значение для выбранного продукта (например, NSManagedObjectID*
):
NSManagedObjectID *selectedProduct;
...
@property (nonatomic, retain) NSManagedObjectID *selectedProduct;
Синтезируйте ivar
в реализации и выпустите его в -dealloc
:
@synthesize selectedProduct;
...
- (void) dealloc {
[selectedProduct release], selectedProduct = nil;
...
}
Установите следующий макрос, где бы вы ни хранили свои константы или в каждом заголовке контроллера представления:
#define UIAppDelegate ((MyAppDelegate *)[UIApplication sharedApplication].delegate)
В любом контроллере представления вы сможете установить и получить доступ к своему значению selectedProduct
, например ::
.
NSManagedObject *foo;
// set the property
[UIAppDelegate setSelectedProduct:[foo objectID]];
// access the property
foo = [self.managedObjectContext objectWithID:[UIAppDelegate selectedProduct]];
Вам не обязательно использовать NSManagedObjectID*
здесь. Вы можете использовать любой класс, который вам нравится.