2

NSFileManager copyItemAtURL:toURL:error:を使用して UNIX 実行可能ファイル (コマンド ライン プログラム) をあるディレクトリから別のディレクトリに移動しようとしていますが、URL タイプがサポートされていないというエラーが常に表示されます。これは、ファイルに拡張子がないため、ディレクトリとして表示されているためだと思いますが、よくわかりません。このタイプのファイルを で移動することはできますNSFileManagerか?

編集:これが私のコードです

#define SAVE_DIR   [@"~/Library/Prog" stringByExpandingTildeInPath]
#define PROG_PATH  [SAVE_DIR stringByAppendingString:@"/ProgCom"]
#define RESOURCES  [[NSBundle mainBundle] resourcePath]
#define LOCAL_PROG [RESOURCES stringByAppendingString:@"/ProgCom"]

-(void)moveProg
{
    NSError *error = nil;
    NSURL *fromURL = [NSURL URLWithString:LOCAL_PROG];
    NSURL *toURL = [NSURL URLWithString:PROG_PATH];

    NSLog(@"%@", [fromURL path]);
    NSLog(@"%@", [toURL path]);

    if ([fMan fileExistsAtPath:[fromURL path]]) {
        [fMan copyItemAtURL:fromURL
                      toURL:toURL
                      error:&error];
        if (error)
            [NSApp presentError:error];
    }
}

私が受け取るエラー:

The file couldn't be opened because the specified URL type isn't supported.

そして最後にログに記録されるもの:

fromURL = /Users/Nick/Library/Developer/Xcode/DerivedData/Prog-dpnblqaraeuecyadjgizbinfrtcm/Build/Products/Debug/Prog.app/Contents/Resources/ProgCom

toURL = /Users/Nick/Library/Prog/ProgCom
4

1 に答える 1

19

問題は、あなたが使用していることです+[NSURL URLWithString:]。実際には URL を指定していないため、これは無効な URL を生成しています。必要なのは+[NSURL fileURLWithPath:]file:///Users/Nick/...URL を生成する です。

于 2012-05-10T22:59:31.013 に答える