0

動画を録画した直後にドキュメント フォルダに保存しようとしています。

これは私のコードです:

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {



    NSString *moviePath = [[info objectForKey:UIImagePickerControllerMediaURL] path];
    [self dismissViewControllerAnimated:YES completion:nil];
    NSLog(@"path from image picker: %@", moviePath);

    NSFileManager* fileManager = [NSFileManager defaultManager];
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES);
    NSString* documentsDir = [paths objectAtIndex:0];

    NSLog(@"%@",documentsDir);

    [fileManager moveItemAtPath:moviePath toPath:documentsDir error:nil];

    NSArray *files = [fileManager contentsOfDirectoryAtPath:documentsDir
                                                  error:nil];

    for (id object in files) {
        NSLog(@"%@",object);
    }
}

ご想像のとおり、うまくいきません。

最初のログには次のように記載されています: 画像ピッカーからのパス: /private/var/mobile/Applications/6630FBD3-1212-4ED0-BC3B-0C23AEEFB267/tmp/capture-T0x1e575330.tmp.SQQ2C5/capturedvideo.MOV

秒ログには次のように記載されています: /var/mobile/Applications/6630FBD3-1212-4ED0-BC3B-0C23AEEFB267/Documents

なぜそれが機能しないのか、誰にも分かりますか?

4

1 に答える 1

2

このコードを試してみてください。何かを保存するとき、ファイルにはそのファイルのファイル名と拡張子が必要です。あなたのコードでは、宛先の保存パスはドキュメント ディレクトリです。それは間違いです。[documentsDir stringByAppendingPathComponent:filename.extension] を使用すると、正しい宛先ファイル パスが得られます。[moviePath lastPathComponent] は、選択したファイルのファイル名 + 拡張子を返します。

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

    NSString *moviePath = [[info objectForKey:UIImagePickerControllerMediaURL] path];
    [self dismissViewControllerAnimated:YES completion:nil];
    NSLog(@"path from image picker: %@", moviePath);

    NSFileManager* fileManager = [NSFileManager defaultManager];
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES);
    NSString* documentsDir = [paths objectAtIndex:0];
    NSString *savePath = [documentsDir stringByAppendingPathComponent:[moviePath lastPathComponent]];

    NSLog(@"%@",savePath);

    [fileManager moveItemAtPath:moviePath toPath:savePath error:nil];

    NSArray *files = [fileManager contentsOfDirectoryAtPath:documentsDir
                                                      error:nil];

    for (id object in files) {
        NSLog(@"%@",object);
    }
}
于 2013-04-29T07:37:10.053 に答える