2013-01-23 144 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

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