2011-01-21 2 views
0

У меня есть RootViewController так:Как пройти ManagedObjectContext Другим видом контроллеров в специальном Case

Заголовок:

@interface ParkingRootViewController : UIViewController { 
    UINavigationController *navigationController; 
    UIToolbar *toolbar; 
    UIBarButtonItem *lastUpdateLabel; 

    NSPersistentStoreCoordinator *persistentStoreCoordinator; 
    NSManagedObjectModel *managedObjectModel; 
    NSManagedObjectContext *managedObjectContext; 
} 

@property (nonatomic, retain) IBOutlet UINavigationController *navigationController; 
@property (nonatomic, retain) IBOutlet UIToolbar *toolbar; 
@property (nonatomic, retain) IBOutlet UIBarButtonItem *lastUpdateLabel; 

@property (nonatomic, retain, readonly) NSManagedObjectModel *managedObjectModel; 
@property (nonatomic, retain, readonly) NSManagedObjectContext *managedObjectContext; 
@property (nonatomic, retain, readonly) NSPersistentStoreCoordinator *persistentStoreCoordinator; 

@property (nonatomic, readonly) NSString *applicationDocumentsDirectory; 

-(IBAction)selectHome:(id)sender; 
//-(void)loadOverlays; 
-(void)testCoreData; 

@end 

Реализация:

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. 
- (void)viewDidLoad { 
    [super viewDidLoad]; 

    //... 

    [self testCoreData]; 

    //creating label in tool bar 
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 150.0f, 20.0f)]; 
    label.text = @"last updated..."; 
    label.textColor = [UIColor colorWithWhite:1.0 alpha:1.0]; 
    label.backgroundColor = [UIColor clearColor]; 
    label.textAlignment = UITextAlignmentCenter; 
    //label.highlightedTextColor = [UIColor colorWithWhite:0.5 alpha:1.0]; 
    //label.highlighted = YES; 
    label.font = [UIFont systemFontOfSize:13.0]; 
    label.userInteractionEnabled = NO; 

    [lastUpdateLabel initWithCustomView:label]; 
    [label release]; 

    [self.view addSubview:self.navigationController.view]; 

    [self.navigationController.view setFrame:self.view.frame]; 

} 

Но мне нужно передать свой managedObjectModel к моему представлению таблицы, а затем к виду карты, чтобы представление карты могло делать запросы в зависимости от того, что пользователь хочет видеть. Я консультировался яблочный образец кода, который выглядит как (из рецептов):

- (void)applicationDidFinishLaunching:(UIApplication *)application { 
    recipeListController.managedObjectContext = self.managedObjectContext; 
    [window addSubview:tabBarController.view]; 
    [window makeKeyAndVisible]; 
} 

Я знаю, что есть в AppDelegate, но я полагаю, что я могу сделать то же самое, когда выбрана строка или другой вид помещаются стек, правильно? Проблема заключается в том, что я настроил большую часть моего зрения с кончика пера, который выглядит так:

alt text

В связи с этим, я не могу использовать ту же стратегию, что компания Apple нанимает передать managedObjectModel на альтернативный viewController (в данном случае PermitListViewController), потому что я не получаю доступ к PermitListViewController непосредственно при добавлении subview. Если у кого-то есть представление о том, как я хочу получить мой управляемый объектObjectModel для моего PermitListViewController. Поделись, пожалуйста! Заранее спасибо!

РЕДАКТИРОВАТЬ: Я думаю о размещении управляемого объекта управления в одноэлементном классе. Каковы мысли ваших ребят по этому поводу? Хорошая практика программирования? Что я должен знать? Благодарю.

+0

Я успешно создал одноэлементный класс для managedObjectModel. Единственный реальный вопрос, который у меня есть, - это, если это считается хорошим стилем программирования. – Stunner

ответ

0

Я закончил создание одноэлементного класса для управляемого объекта управления, используя this as a reference (прокрутите вниз до «Создание экземпляра Singleton»).

1

Почему нет делегата NSManagedObjectContext? Тогда это будет легко доступно из всех ваших контроллеров представления, и поскольку они являются пользовательским интерфейсом, они выполняются в основном потоке и поэтому могут совместно использовать один и тот же MOC.

+0

Ну, это немного сложно. Поскольку я работаю над проектом, который содержит много «вспомогательных приложений», которые открываются с помощью модального представления, и в настоящее время я хочу, чтобы каждое вспомогательное приложение имело свой собственный managedObjectModel, по крайней мере на начальном этапе, так что каждая часть приложения будет иметь свой собственный экземпляр Core Data и схемы. Оттуда у меня нет проблем с перемещением управляемого объекта управления в appDelegate. Но пока я не хочу, поскольку я хочу, чтобы экземпляры Core Data были изолированы, пока моя команда изучает структуру. – Stunner

Смежные вопросы