0

私は(一種の)スタンフォードCS193P iosクラスに従っており、コントローラーからコントローラーに渡すことなくドキュメントコンテキストを取得しようとしています。Haggerty 教授はこの方法を使用してコンテキストを取得していますが、私にはうまくいきません。私はすべてを正しくつづっています。渡すとコンテキストを取得できますが、このように取得すると取得できません。
私は何かが欠けていますか?? 渡さなくても作成したことがわかっているデータベースのコンテキストを取得したいだけです。

- (void)useDemoDocument
{
    NSURL *url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
    url = [url URLByAppendingPathComponent:@"Demo Document"];
    UIManagedDocument *document = [[UIManagedDocument alloc] initWithFileURL:url];

    if (![[NSFileManager defaultManager] fileExistsAtPath:[url path]]) {
        [document saveToURL:url
           forSaveOperation:UIDocumentSaveForCreating
          completionHandler:^(BOOL success) {
              if (success) {
                  self.managedObjectContext = document.managedObjectContext;
                  [self refresh];
              }
          }];
    } else if (document.documentState == UIDocumentStateClosed) {
        [document openWithCompletionHandler:^(BOOL success) {
            if (success) {
                self.managedObjectContext = document.managedObjectContext;
            }
        }];
    } else {
        self.managedObjectContext = document.managedObjectContext;
    }
}
4

2 に答える 2

0

スペルミスはないと思いますが、そのメソッドが何をしているのかについて間違った期待をしている可能性があります。メソッドはコンテキストを返しません。コンテキストをクラス プロパティとして設定します (ただし、場合によってのみ!)。したがって、このメソッドを呼び出した後、self.managedObjectContext プロパティにアクセスできるはずです。

ただし..メソッドの実装はあまりきれいではないため、少し危険です。シナリオが成功した場合にのみ、「managedObjectContext」プロパティを設定します。それ以外の場合、このメソッドは self.managedObjectContext プロパティをクリアしないため、そのような場合、self.managedObjectContext が何を指しているのか不明です。メソッドは成功ステータスを提供しないため、managedObjectContext が適切に設定されているかどうかを信頼することはできません。

于 2013-11-13T09:48:43.783 に答える