2011-08-15 24 views
4

ファイルの選択ダイアログボックスがアプリケーション内にありますが、ユーザーがボックス内の「選択」ボタンをクリックすると、明らかに何も行われません。選択したファイルからファイルパスを抽出するにはどうすればよいですか?暗号化するファイルの内容を取得できるように、ファイルパスが必要です。最初は、アプリケーションに使用するファイルをハードコーディングしましたが、これはテスト目的のみでした。ここで私がファイルを開くダイアログボックスのために使用しているもの:ファイルパスを開くファイルを開くダイアログボックスcocoa?

int i; 
NSOpenPanel* openDlg = [NSOpenPanel openPanel]; 
[openDlg setCanChooseFiles:YES]; 
[openDlg setCanChooseDirectories:YES]; 
[openDlg setPrompt:@"Select"]; 
NSString *fileName = [pathAsNSString lastPathComponent]; 
[fileName stringByDeletingPathExtension]; 
if ([openDlg runModalForDirectory:nil file:nil] == NSOKButton) 
{ 
    NSArray* files = [openDlg filenames]; 
    for(i = 0; i < [files count]; i++) 
    { 
     [files objectAtIndex:i]; 

    } 

} 

ありがとうございました。

答えて

1

あなたのコードは既にユーザーが選択したファイルを処理しています。あなたはそれらを使って何もしません。

‑filenamesメソッドから返された配列には、ユーザーがNSStringオブジェクトとして選択したファイルへのパスが含まれています。 1つのファイルのみを選択した場合、配列には1つのオブジェクトしか存在しません。ファイルが選択されていない場合、配列は空になります。

if ([openDlg runModalForDirectory:nil file:nil] == NSOKButton) 
{ 
    NSArray* files = [openDlg filenames]; 
    for(NSString* filePath in [openDlg filenames]) 
    { 
     NSLog(@"%@",filePath); 
     //do something with the file at filePath 
    } 
} 

あなたが唯一のユーザーは、あなたがパネルを構成しているとき[openPanel setAllowsMultipleSelection:NO]を呼び出して、単一のファイルを選択することができるようにしたい場合。この方法では、filenames配列に最大1つのエントリが存在します。

@VenoMKOが指摘しているように、‑filenamesメソッドは非推奨となっており、代わりに‑URLsメソッドを使用する必要があります。これは、NSStringの配列ではなく、ファイルNSURLのオブジェクトの配列を返します。 Snow Leopardのファイル処理APIのほとんどすべてがURLを取るように改訂されて以来、これが好ましいオプションです。

+0

runModalForDirectory:file:types:OS X v10.6では非推奨です。代わりにrunModalを使用することができます。 setDirectoryURL:を使用してパスを設定し、setAllowedFileTypes:を使用してfileTypesを設定できます。 – Itachi

5

filenamesの代わりに- (NSArray *)URLsメソッドを使用してください。

+0

を使用したファイルのパスを取得したい - 取り外し警告(NSArrayの*)URLの方法を、しかし、私は、ファイルの内容を取得するためにファイルに見てすることはできませんよ。 シナリオ: - ケース1 NSArray * files = [openDlg filenames]; 私はこの出力を取得しています:filePath =/Users/sumitgosh/Desktop/FD_TextFilesToUpload/SmallDummy Data/FirstName.txt ファイルの内容を読む場合には完全に機能しています。 - ケース2: NSArray * files = [openDlg URLs]; OutPut:filePath = fileName =/Users/sumitgosh/Desktop/FD_TextFilesToUpload/SmallDummy Data/FirstName.txt ファイルの内容を読み取る場合には機能しません。 @VenoMKO – NSExpression

0

あなたは、私が使用している場合は、次のコード

NSOpenPanel* openPanel = [NSOpenPanel openPanel]; 
       [openPanel setCanChooseFiles:YES]; 
       [openPanel setCanChooseDirectories:NO]; 
       [openPanel setAllowsMultipleSelection: NO]; 
       [openPanel setAllowedFileTypes:ArrExtension ]; 
       if ([openPanel runModal] == NSOKButton){ 

        NSString *FilePath = [NSString stringWithFormat:@"%@",[openPanel URL]]; 
        [openPanel canHide]; 
       } 
関連する問題