2

私はobjective-cを初めて使用するので、知識不足をお許しください。ここにコードのスニペットがありますが、正しく機能していないようです。私がやりたいのは、ボタンをクリックしたときにディレクトリ選択パネルを表示することです。ユーザーがディレクトリを選択したら、ディレクトリ内のすべての配列を作成したいと思います。最終的には、この配列を使用して、別の場所にコピーするサブディレクトリとファイル(ユーザーが選択したディレクトリ内のすべて)のリストを作成したいと思います。

インスタンスメソッド'-contentsofdirectoryaturl:options:error'が見つかりません(戻り値のタイプはデフォルトでidになります)という警告があります。それが何を意味するのか、それをどのように修正するのか正確にはわかりません。これが私の問題だと思います。提供されたアドバイスは素晴らしいでしょう。ありがとう!

- (IBAction)selectfiles:(id)sender {

NSOpenPanel *openPanel = [NSOpenPanel openPanel];

[openPanel setCanChooseDirectories:YES];
[openPanel setCanChooseFiles:NO];
[openPanel setAllowsMultipleSelection:NO];

if ( [openPanel runModal] == NSOKButton ) {

    NSArray *accountPath = [openPanel URLs];
    NSLog (@"%@", accountPath);

    NSFileManager *filemgr;
    filemgr = [NSFileManager defaultManager];

    NSArray *contents;
    contents = [filemgr contentsOfDirectoryAtURL:accountPath options:(NSDirectoryEnumerationSkipsHiddenFiles) error:nil];

    }

}

4

1 に答える 1

3

contentsOfDirectoryAtURL:includingPropertiesForKeys:省略した追加の引数があります。これが、コンパイラが警告する理由です。その引数は、プリフェッチするプロパティのリストです。最も単純なケースでは、空の配列を指定できます。

もう1つのエラーは、1つのアイテムだけが選択されている場合でも、URLの配列[openPanel URLs]を返すことです。

したがって、コードは次のようになります。

NSURL *accountPath = [[openPanel URLs] objectAtIndex:0];
NSLog (@"%@", accountPath);

NSFileManager *filemgr;
filemgr = [NSFileManager defaultManager];

NSArray *contents;
contents = [filemgr contentsOfDirectoryAtURL:accountPath
    includingPropertiesForKeys:[NSArray array]
    options:(NSDirectoryEnumerationSkipsHiddenFiles)
    error:nil];
于 2012-08-28T20:32:44.753 に答える