2015-06-10 43 views
1

我想用NSURL URLWithString從一個非常長的文件名可能很長的文件路徑創建一個NSURL對象。當我使用URLWithString轉換爲NSURL對象的文件路徑,該路徑被縮短,省略號「......」被放在NSURL:NSURL URLWithString縮短很長的字符串,省略號「...」,創建無效的NSURL對象

Path as NSString: /var/mobile/Containers/Data/Application/APPLICATION_ID/Documents/TEMP/this_is_a_really_really_and_i_mean_reaeeeeaaaallly_long_file_name/this_is_a_really_really_and_i_mean_reaeeeeaaaallly_long_file_name.xml 

// Convert to NSURL using this technique: 
[NSURL URLWithString:pathAsString] 

Path as NSUrl: /var/mobile/Containers/Data/Application/APPLICATION_ID/Documents/TEMP/this_is_a_really_really_and_ ... name.xml 

我不能找到解決這個問題的任何方式,並我得到一個錯誤,當我嘗試打開在NSURL我試圖創建文件,說有沒有這樣的文件或目錄:

Error Domain=NSCocoaErrorDomain Code=260 "The operation couldn’t be completed. (Cocoa error 260.)" UserInfo=0x15ec82b0 {NSFilePath=/var/mobile/Containers/Data/Application/APPLICATION_ID/Documents/TEMP/this_is_a_really_really_and_ ... name.xml, NSUnderlyingError=0x15eac4a0 "The operation couldn’t be completed. No such file or directory"} 

我不知道爲什麼要添加的省略號和我無法弄清楚如何解決這個問題。

+0

你可以添加代碼如何生成路徑? – Tobias

回答

2

您的代碼

NSString *const path = @"/var/mobile/Containers/Data/Application/APPLICATION_ID/Documents/TEMP/this_is_a_really_really_and_i_mean_reaeeeeaaaallly_long_file_name/this_is_a_really_really_and_i_mean_reaeeeeaaaallly_long_file_name.xml"; 
NSURL *const url = [NSURL URLWithString:path]; 
NSLog(@"%@", url); 
NSLog(@"%@", url.path); 

打印

/var/mobile/Containers/Data/Application/APPLICATION_ID/Documents/TEMP/this_is_a_really_really_and_i_mean_reaeeeeaaaallly ... name.xml 
/var/mobile/Containers/Data/Application/APPLICATION_ID/Documents/TEMP/this_is_a_really_really_and_i_mean_reaeeeeaaaallly_long_file_name/this_is_a_really_really_and_i_mean_reaeeeeaaaallly_long_file_name.xml 

URL具有正確存放的路徑,NSURL小號description登錄網址時,系統簡單地縮短了。你的問題似乎在別的地方。

+0

但他得到這個錯誤。 – Tobias

+0

@Tobias'NSFileReadNoSuchFileError = 260'是的,也許那個文件根本不存在? –

+0

這可能是。另外請記住,iOS文件系統區分大小寫。但是OS X文件系統通常不是。 – Tobias

2

您應該使用NSURL工廠方法。

+ (id)fileURLWithPath:(NSString *)path 
1

我遇到了同樣的問題,因爲Apache科爾多瓦使用NSURL的「直白」轉換成字符串 - 其縮寫我的網址,並打破了我的手機應用程序,我的web應用程序之間的接口。

簡單的解決方法是使用

url.absoluteString

,而不是僅僅

網址

顯然,即使是在Apache的iOS的破解不知道的NSURL的這種奇怪的行爲。我也不會預料到這一點。