NSURL URLWithString 正在使用省略号“...”缩短非常长的字符串,创建无效的 NSURL 对象
NSURL URLWithString is shortening very long strings with an ellipsis "...", creating invalid NSURL objects
我正在尝试使用 NSURL URLWithString 从一个可能很长的文件路径和一个很长的文件名创建一个 NSURL 对象。当我使用 URLWithString 将文件路径转换为 NSURL 对象时,路径被缩短并且省略号“...”被放入 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"}
我不知道为什么要添加省略号,我不知道如何解决这个问题。
您的代码
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
s description
只是在记录 URL 时将其缩短。您的问题似乎出在其他地方。
您或许应该使用 NSURL 工厂方法。
+ (id)fileURLWithPath:(NSString *)path
我 运行 遇到了同样的问题,因为 Apache Cordova 使用 "straightforward" 将 NSURL 转换为字符串 - 缩写了我的 URL 并破坏了我的移动应用程序和我的网络应用程序之间的接口。
简单的解决方案是使用
url.absoluteString
而不只是
url
显然,即使是 Apache 的 iOS 破解者也没有意识到 NSURL 的这种 st运行ge 行为。我也没想到会这样。
我正在尝试使用 NSURL URLWithString 从一个可能很长的文件路径和一个很长的文件名创建一个 NSURL 对象。当我使用 URLWithString 将文件路径转换为 NSURL 对象时,路径被缩短并且省略号“...”被放入 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"}
我不知道为什么要添加省略号,我不知道如何解决这个问题。
您的代码
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
s description
只是在记录 URL 时将其缩短。您的问题似乎出在其他地方。
您或许应该使用 NSURL 工厂方法。
+ (id)fileURLWithPath:(NSString *)path
我 运行 遇到了同样的问题,因为 Apache Cordova 使用 "straightforward" 将 NSURL 转换为字符串 - 缩写了我的 URL 并破坏了我的移动应用程序和我的网络应用程序之间的接口。
简单的解决方案是使用
url.absoluteString
而不只是
url
显然,即使是 Apache 的 iOS 破解者也没有意识到 NSURL 的这种 st运行ge 行为。我也没想到会这样。