2013-01-23 102 views
0

我需要使用NSURL对象才能在同一主机上访问不同的资源。NSURL - 设置修改路径

这里是我做的:

#define MY_HOST @"my.server.eu" 
NSURL *url = [[NSURL alloc] initWithScheme:@"http" host:MY_HOST path:@"/"]; 

现在我需要处理

如何Ç我修改我的NSURL对象的路径?
为什么我们不能简单地做url.path = @"path1"

+1

如何在循环内生成字符串并将其转换为NSURL? –

+0

此网址是我在多个不同位置使用的课程的公开成员。你说我每次需要时都要重新创建NSURL? –

+0

是的,像这样NSString * str = [NSString stringwithFormat:@“%@%d”,url,counter],然后将其转换为url作为NSURL * finalURL = [NSURL URLWithString:str]; –

回答

4

如何修改我的NSURL对象的路径?

为什么我们不能简单地做url.path = @"path1"

因为NSURL是一个不可变的对象,并且以后不能更改其属性。 NSMutableURL不存在,但在众多的愿望清单上。

为了实现你的目标,你将不得不使3个独立的NSURL对象恐怕。要做到这一点,你可以方便的数组中的路径:

NSString *host = @"http://my.server.eu/"; 
NSArray *paths = @[@"path1", @"path2", @"path3"]; 

NSURL *path1 = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@", host, path[0]]]; 
NSURL *path2 = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@", host, path[1]]]; 
NSURL *path3 = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@", host, path[2]]]; 
+0

哇!好吧,我想我甚至不会最终使用这个对象:)(实际上我只是想利用它来利用他的url构建函数)谢谢你的不可变更的解释。 –

+0

不要误解我的意思,'NSURL'的使用可能非常方便,但并不像大多数人希望的那样灵活。 – WDUK

+0

我希望它很方便,我肯定会在以后使用它:) –

1

你应该基本URL为你做的,然后建立相对它使用+[NSURL URLWithString:relativeToURL:]别人。

+0

这将带来可维护性,但我仍然必须每次需要获取[[[NSURL alloc] initWithString:my_path relativeToURL:url] .absoluteString'新的url字符串,不是吗? –

+0

如果你需要一个字符串,是的,你必须要求它一个字符串。 –