0

アプリがバックグラウンドになると、次のメソッドを呼び出します。

- (void)saveArticlePosition {
    self.article.position = self.position;

    NSManagedObjectContext *managedObjectContext = [(AppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];
    NSError *error;

    [managedObjectContext save:&error];
}

からの通知でapplicationDidEnterBackground。ただし、次のアプリの起動時に、次のエラーが表示されます。

[ReadingViewController setManagedObjectContext:]: unrecognized selector sent to instance 0x844fe40

私の次の行から発生しましたAppDelegate.m

controller.managedObjectContext = self.managedObjectContext;

これは、この大きな部分の一部です:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
    RootViewController *controller = (RootViewController *)navigationController.topViewController;
    controller.managedObjectContext = self.managedObjectContext;
    ...

正確に何がうまくいかないのですか?私が考えることができるのは、 でCore Data に保存したときに、controllerそこにあるオブジェクトのタイプが であるということだけですが、どうすればそれを修正できますか?RootViewControllerReadingViewController

4

2 に答える 2

0

エラー メッセージによると、navigationController.topViewController から取得したオブジェクトは、RootViewController にキャストしても、実際には ReadingViewController です。ReadingViewController には managedObjectContext プロパティがないようです。

コードは、saveArticlePosition のローカル プロパティではなく AppDelegate から直接 managedObjectContext を取得することを示しているため、とにかくそのプロパティを設定しようとしている理由もわかりません。

于 2013-07-29T17:00:41.303 に答える