0

プッシュする直前にView Controllerに割り当てているデータが、プッシュの直後にnullになる理由がわかりません。

ストレージには Core Data を使用しています。オブジェクトはProjectNSManagedObject です。

これが私の流れです:

  1. ホーム ビュー コントローラーで、UIImagePickerViewController を起動します。
  2. ファイルに- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info書き込み、パスをコア データ オブジェクトに保存します。
  3. コア データから親オブジェクトを取得し、null でないことを確認します。
  4. イメージ ピッカー ビュー コントローラーを閉じます。
  5. 別のビュー コントローラーをインスタンス化し、親オブジェクトをそのビュー コントローラーのプロパティに割り当てます@property (nonatomic, strong) Project * project;
  6. その新しいView Controllerをプッシュします
  7. ビュー コントローラのviewDidLoadメソッドでは、オブジェクトが null になりました。

なぜこれが起こっているのかについて何か考えはありますか?

コードは次のとおりです。

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    // Access the uncropped image from info dictionary
    UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];

    ImageInfo * imgInfo = [[DataController sharedController] newImageInfo];

    // Create path to output images
    NSString  *imagePath = [NSHomeDirectory() stringByAppendingPathComponent:[NSString stringWithFormat: @"Documents/%@.%@"
                                                                                                       , imgInfo.filename
                                                                                                       , imgInfo.extension]];
    [UIImageJPEGRepresentation(image , 0.5) writeToFile:imagePath atomically:YES];
    imgInfo.path = imagePath;

    AnnotationDocument * annDoc = [[DataController sharedController] newAnnotationDocument];
    [[DataController sharedController] associateImageInfo:imgInfo withAnnotationDocument:annDoc];

    Project * untitledProject = [[DataController sharedController] untitledProject];
    [[DataController sharedController] associateAnnotationDocument:annDoc withProject:untitledProject];
    NSLog( @"UP key: %@" , untitledProject.key );

    [[DataController sharedController] saveContext];
    NSLog( @"UP key: %@" , untitledProject.key );

    [picker dismissModalViewControllerAnimated:NO];

    AnnotationDocListViewController * vc = [[AnnotationDocListViewController alloc] init];
    vc.project = [[DataController sharedController] projectForKey:untitledProject.key];

    [self.navigationController pushViewController:vc animated:YES];
}
4

0 に答える 0