我一直在修改一些代码以在Mac OS X和iPhone OS之间工作。
[我遇到了一些使用NSURL
的URLByAppendingPathComponent:
(在10.6中添加的代码),某些人可能知道,这些代码在iPhone SDK中不可用。
我的使此代码在操作系统之间工作的解决方案是使用
NSString *urlString = [myURL absoluteString]; urlString = [urlString stringByAppendingPathComponent:@"helloworld"]; myURL = [NSURL urlWithString:urlString];
问题是
NSString
的stringByAppendingPathComponent:
似乎从URL的http://部分中删除了/之一。
这是预期的行为还是错误?
[好,所以我问上述问题有点太快了。我重新阅读了文档,它does说:
请注意,此方法仅适用于文件路径(例如,URL的字符串表示形式)
但是,如果您需要在iPhone的URL上附加路径组件,它并没有给出正确的方向指示。
我总是可以手动完成,添加一个/ if(如果需要)和额外的字符串,但是我一直在寻找使其尽可能接近原始Mac OS X代码的方式...
我一直在修改一些代码以在Mac OS X和iPhone OS之间工作。我遇到了一些使用NSURL的URLByAppendingPathComponent:(在10.6中添加)的代码,正如某些人所知道的,它不是...
我将在NSURL上实现相同功能的myURLByAppendingPathComponent:
方法。给它起一个不同的名字的原因是,当苹果公司开始将10.6 API移植到iPhone时,它不会覆盖苹果公司提供的方法(因此“我的”只是一个例子-一点是,这不太可能有人否则将使用该名称编写一个方法)。
[NSString Reference说关于stringByAppendingPathComponent:
的内容
有一个简单的解决方法。使用[NSString stringWithFormat:@“%@ /%@”,服务器,文件]可以正常工作。
+ (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;
}