3

検索を行いましたが、これに関する問題は見つかりませんでした。

私のアプリケーションは .csv ファイルを受け取り、データを切り替えて、会社が便利だと思う方法で出力します。問題は、プログラムが空白のないファイル名を要求しているように見えることです。たとえば、「My data.csv」は機能しませんが、「My_data.csv」は機能します。これが、関連するコードであると私が信じているものです

 NSArray *allowedTypes = [NSArray arrayWithObjects:@"CSV",@"csv",nil];
openDLG = [NSOpenPanel openPanel];
[openDLG setDelegate:self];
[openDLG setCanChooseFiles:YES];
[openDLG setAllowedFileTypes:allowedTypes];

NSInteger openReturn = [openDLG runModal];
if (openReturn == NSFileHandlingPanelOKButton) {
    NSArray *rawCSVs = [openDLG URLs];
    NSEnumerator *enumerator = [rawCSVs objectEnumerator];
    id object;
    while ((object = [enumerator nextObject])) {
        NSString *tempDump = [NSString stringWithContentsOfURL:object encoding:NSUTF8StringEncoding error:NULL];
        NSArray *bigArray = [tempDump csvRows];
        int total = [bigArray count];
        ....do other things

デバッグモードでは、「オブジェクト」は空白を含むファイル名の場合は nil として表示され、「tempdump」文字列は空白を含むファイル名の場合は @「nil」として表示されますが、names_with_underscores の場合は見事に表示されます

4

1 に答える 1

4

URL ではすべての文字を使用できるわけではないため、何らかの変換を行う必要があります。

NSString *rawString = [NSString stringWithString:@"/Users/myusername/test 1.txt"];
NSString *escapedString = [rawString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:escapedString];
NSLog(@"url: %@", url);
于 2012-07-16T19:19:44.637 に答える