2012-07-16 38 views
3

做了搜索,沒有發現任何問題。NSOpenPanel沒有正確地從文件名中用空格訪問NSUrl

我的應用程序需要.csv文件,切換數據並以我公司認爲有用的方式吐出。問題在於該程序似乎需要不帶空白的文件名。例如「我的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 

在調試模式下,「對象」出來作爲零用空白和「tempdump」串出來作爲@「零」爲文件名是以空格的文件名,但出現了奇妙的名稱_with_underscores

回答

4

URL不允許每個字符,所以你需要做一些轉換。

NSString *rawString = [NSString stringWithString:@"/Users/myusername/test 1.txt"]; 
NSString *escapedString = [rawString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
NSURL *url = [NSURL URLWithString:escapedString]; 
NSLog(@"url: %@", url); 
+0

我想我想通了這個或解決方法之前,我看到了這一點 - 無論如何感謝您的正確信息。 – Pinwheeler 2012-11-03 01:08:31