【问题标题】:NSURL fileUrlWithPath method returns double pathNSURL fileUrlWithPath 方法返回双路径
【发布时间】:2015-11-28 11:53:12
【问题描述】:

这是场景: 在 OS X 10.10.5 的沙盒应用程序中,我在 NSString 对象中保存了一些路径,例如 @"file:///Users/xxx/"。

然后我执行[NSURL fileURLWithPath:object]。这给了我这样的 NSURL 对象

@"file:/Users/xxx -- file:///Users/xxx/Library/Containers/com.123456.App/Data/"

.

我只需要这部分@"file:///Users/xxx/Library/Containers/com.123456.App/Data/"

不知何故,源字符串被扭曲和加倍,并在中间添加了额外的破折号。 谁能解释一下为什么会这样?

Xcode 6.4

【问题讨论】:

  • 我猜这与您构建字符串路径的方式有关。你能告诉我们你在那里做什么吗..

标签: objective-c macos cocoa osx-yosemite nsurl


【解决方案1】:

你能试试这样的吗?通过给出文件名和扩展名。

NSURL *url=[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"fileName" ofType:@"fileExtension"]];

【讨论】:

    【解决方案2】:

    fileURLWithPath: 将返回一个文件 URL 路径。

    即以:file:///

    开头

    这意味着你传递给它的字符串路径应该是:

    @"/Users/xxx/Library/Containers/com.123456.App/Data/"
    

    您不需要在路径前加上 file:///。否则你会得到你得到的结果。


    例子:

    NSString * stringPath = @"/Users/xxx/Library/Containers/com.123456.App/Data/";
    
        NSURL * anUrl =[NSURL fileURLWithPath:stringPath ];
    
    
         NSLog(@"nUrl %@",anUrl);
    

    ----> nUrl file:///Users/xxx/Library/Containers/com.123456.App/Data/

    【讨论】:

    • 或者,如果您以 URL 字符串开头,即@"file:///Users/xxx/",请使用+URLWithString:
    猜你喜欢
    • 2012-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多