2012-08-09 16 views
11

tôi sử dụng dòng mã này để tải một tập tin html địa phương vào một cái nhìn web:NSURL thêm tham số để phương pháp fileURLWithPath

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

Tuy nhiên tôi muốn thêm một số thông số http để url không có may mắn cho đến nay.

Tôi đã thử điều này:

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

Nhưng sau này một html không tải trong webview.

Có cách nào để tải tệp html cục bộ trong chế độ xem web với thông số không?

+0

Nếu bạn 'NSlog' URL sau khi bạn thêm thông số thì chúng có được bao gồm không? – rckoenes

Trả lời

13

Làm điều này:

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

Đúng vậy. Cảm ơn bạn! –

+1

Tôi cần một nút +50 phiếu bầu cho câu trả lời này. – DataGraham

+0

Điều này không phải lúc nào cũng hiệu quả. Nếu URL kết thúc bằng các đoạn (ví dụ: #something) thì URL sẽ trở thành URL không hợp lệ sau khi chạy đoạn mã này. –

1

tôi sử dụng như theo cách này:

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

Nếu file của bạn đưa vào thư mục Resource của hoa tiêu của dự án. nếu không bạn phải đặt đường dẫn đầy đủ của mình trong NSString và sử dụng đường dẫn đó trong đường dẫn NSURL của mình.

6

Câu trả lời được bỏ phiếu nhiều nhất theo số Hoàng tử không phải lúc nào cũng hoạt động.

Trong iOS 7 Apple đã giới thiệu lớp NSURLComponents, chúng tôi có thể tận dụng điều đó để thêm truy vấn một cách an toàn vào 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

Cảm ơn, chính xác những gì tôi đang tìm kiếm –

+0

Một lưu ý ở đây: thuộc tính queryItems của NSURLComponents chỉ khả dụng trong iOS 8+ –