2012-08-09 7 views
11

Używam tego wiersza kodu, aby załadować lokalny plik HTML do widoku internetowej:bibliotece NSURL dodać parametry do metody fileURLWithPath

NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"index" ofType:@"html" inDirectory:@"html"]]; 

Jednakże chcę dodać kilka parametrów HTTP url bez powodzenia tej pory.

Próbowałem to:

url = [url URLByAppendingPathComponent:@"?param1=1"]; 

Ale po tym html nie ładuje w WebView.

Czy istnieje sposób na załadowanie lokalnego pliku html w widoku sieci z parametrami?

+0

Czy po "NSlog" adres URL po dodaniu parametrów jest uwzględniony? – rckoenes

Odpowiedz

13

Wykonaj:

NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"index" ofType:@"html" inDirectory:@"html"]]; 

NSString *URLString = [url absoluteString]; 
NSString *queryString = @"?param1=1"; 
NSString *URLwithQueryString = [URLString stringByAppendingString: queryString]; 

NSURL *finalURL = [NSURL URLWithString:URLwithQueryString]; 
NSURLRequest *request = [NSURLRequest requestWithURL:finalURL cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:(NSTimeInterval)10.0 ]; 

[web loadRequest:request]; 
+0

To wszystko. Dziękuję Ci! –

+1

Potrzebuję przycisku +50 głosowania dla tej odpowiedzi. – DataGraham

+0

To nie zawsze działa. Jeśli adres URL kończy się fragmentami (to jest #something), po uruchomieniu tego kodu staje się nieprawidłowym adresem URL. –

1

używam jak ten sposób:

NSURL *url=[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"index" ofType:@"xml"]]; 

Jeśli plik dołączony do folderu zasobem nawigatora projektu. w przeciwnym razie musisz ustawić pełną ścieżkę w NSString i użyć jej w swojej ścieżce NSURL.

6

Najbardziej przecząca odpowiedź Prince nie zawsze działa.

W wersji iOS 7 Apple wprowadzono klasę NSURLComponents, możemy to wykorzystać, aby bezpiecznie dodać zapytanie do NSURL.

NSURL *contentURL = ...; 
NSURLComponents *components = [[NSURLComponents alloc] initWithURL:contentURL resolvingAgainstBaseURL:NO]; 
NSMutableArray *queryItems = [components.queryItems mutableCopy]; 
if (!queryItems) queryItems = [[NSMutableArray alloc] init]; 
[queryItems addObject:[NSURLQueryItem queryItemWithName:@"access_token" value:@"token_here"]]; 
components.queryItems = queryItems; 
NSURL *newURL = components.URL; 
+0

Dzięki, dokładnie to, czego szukałem –

+0

Jedna uwaga tutaj: właściwość queryItems NSURLComponents jest dostępna tylko w systemie iOS 8+ –