1

NSManagedObjectContextビュー コントローラの 1 つに を設定する際に問題が発生しています - LibraryTrackTimeViewController。スクリーンショットを添付しています(ここでのルールに違反していないことを願っています)。

http://imgur.com/qgrH4T2

ご覧のとおり、 と に埋め込まれてNavigationControllertabBarContollerます。NSManagedObjectContextの他のviewControllerのを設定していますappDelegate

-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;

UINavigationController *navigationController = (UINavigationController *)[[tabBarController viewControllers] objectAtIndex:0];

TagLibraryViewController *tagLibraryViewController = (TagLibraryViewController *)[[navigationController viewControllers] objectAtIndex:0];
tagLibraryViewController.managedObjectContext = self.managedObjectContext;

navigationController = (UINavigationController *)[[tabBarController viewControllers] objectAtIndex:1];

LibrariesViewController *librariesViewController = (LibrariesViewController *)[[navigationController viewControllers] objectAtIndex:0];
librariesViewController.managedObjectContext = self.managedObjectContext;

MapViewController *mapViewController = (MapViewController *)[[tabBarController viewControllers] objectAtIndex:2];
mapViewController.managedObjectContext = self.managedObjectContext;

return YES;

}

他のView Controllerは簡単に渡すことができますmanagedObjectContext-しかし、それが埋め込まれているため、それを自分に送信する方法について前もってラップするのに問題がLibraryTrackTimeViewControllerあります..あなたが私に与えることができる助けやアドバイス-それは素晴らしいでしょう! objectContextsビューコントローラーに送信するより良い方法はありますか?

4

1 に答える 1

2

複雑すぎる場合は、アプリのデリゲートからコンテキストを公開できます

// AppDelegate.h
@property (nonatomic, strong) NSManagedObjectContext *managedObjectContext;

次に、デリゲートから直接取得します。

#include "AppDelegate.h"

AppDelegate *delegate = (AppDelegate*)
             [[UIApplication sharedApplication] delegate];
self.managedObjectContext = delegate.managedObjectContext;

これは推奨事項ではありません。コンテキストをコントローラーに渡すこともお勧めします。しかし、これは完全に有効な設計パターンであるため、簡単に使用できる場合は使用できます。

于 2013-01-29T21:43:57.950 に答える