NSString的stringByAppendingPathComponent:删除http://中的'/'。>

问题描述 投票:26回答:5

我一直在修改一些代码以在Mac OS X和iPhone OS之间工作。

[我遇到了一些使用NSURLURLByAppendingPathComponent:(在10.6中添加的代码),某些人可能知道,这些代码在iPhone SDK中不可用。

我的使此代码在操作系统之间工作的解决方案是使用

NSString *urlString = [myURL absoluteString];
urlString = [urlString stringByAppendingPathComponent:@"helloworld"];
myURL = [NSURL urlWithString:urlString];

问题是NSStringstringByAppendingPathComponent:似乎从URL的http://部分中删除了/之一。

这是预期的行为还是错误?


编辑

[好,所以我问上述问题有点太快了。我重新阅读了文档,它does说:

请注意,此方法仅适用于文件路径(例如,URL的字符串表示形式)

但是,如果您需要在iPhone的URL上附加路径组件,它并没有给出正确的方向指示。

我总是可以手动完成,添加一个/ if(如果需要)和额外的字符串,但是我一直在寻找使其尽可能接近原始Mac OS X代码的方式...

我一直在修改一些代码以在Mac OS X和iPhone OS之间工作。我遇到了一些使用NSURL的URLByAppendingPathComponent:(在10.6中添加)的代码,正如某些人所知道的,它不是...

iphone cocoa cocoa-touch macos nsstring
5个回答
15
投票

我将在NSURL上实现相同功能的myURLByAppendingPathComponent:方法。给它起一个不同的名字的原因是,当苹果公司开始将10.6 API移植到iPhone时,它不会覆盖苹果公司提供的方法(因此“我的”只是一个例子-一点是,这不太可能有人否则将使用该名称编写一个方法)。


12
投票

URLByAppendingPathComponent


5
投票

[NSString Reference说关于stringByAppendingPathComponent:的内容


2
投票

有一个简单的解决方法。使用[NSString stringWithFormat:@“%@ /%@”,服务器,文件]可以正常工作。


1
投票
+ (NSString *)urlStringPathWithComponents:(NSArray *)paths
{
    NSString *url = @"";
    for( NSString *item in paths)
    {
        if([item isEqualToString:paths.firstObject])
        {
            url = [url stringByAppendingString:[NSString stringWithFormat:@"%@", item]];
        }else{
            url = [url stringByAppendingString:[NSString stringWithFormat:@"/%@", item]];
        }

    }
    return url;
}
© www.soinside.com 2019 - 2024. All rights reserved.