0

私はiPadアプリの開発を始めたばかりで、問題に長い間苦労しているので、助けを求めることにしました。

ストーリーボードを使用したiPad用のアプリケーションがあり、CoreDataを使用したタブ付きアプリケーションとして開始しました。したがって、問題は、NSManagedObjectContextが値で始まりますが、別のタブに移動すると、managedObjectContextがnullになることです。

何をすべきかわからない。いくつかの助けをいただければ幸いです。

ありがとう

エルクチョ

4

1 に答える 1

1

少し混乱しています...

self.window.rootViewController

のインスタンスを返す必要がありますがUITabBarController、これは応答しないため、setManagedObjectContext:クラッシュするはずです。

これを念頭に置いて、あなたはそれをする必要があります

  1. tabBarController を取得する
  2. tabBarController が管理する viewController を循環します
  3. それらに managedObjectContext を渡します

    for (id viewController in self.window.rootViewController.viewControllers) {
      [viewController setManagedObjectContext:self.managedObjectContext];
    }
    

編集

ざっと見てきました。

  • サブクラスUITabBarController化する必要はめったになく、この場合は本当に必要ありません。あなたがしたいことはmanagedObjectContext、tabBarController の各 viewControllers を取得することです。tabBarController 自体はそれについて知る必要があります。

私はあなたapplication:didFinishLaunchingWithOptions:を次のように変更しましたが、それは想定どおりに機能しました

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

  for (id viewController in tabBarController.viewControllers) {
    [viewController setManagedObjectContext:self.managedObjectContext];
  }
}
于 2012-11-04T20:37:39.997 に答える