2014-10-09 1 views
-2

NSData 객체가 있고 WebView에 표시하려고합니다. WebView는 NSData 개체를 처리/표시 할 수 있습니까?NSView를 WebView에로드하기

NSData *data = ... // some data I've gotten from NSURLConnection 
WebView *webView = ... [[WebView alloc] init]; 
+0

NSData는 무엇을 설명합니까? UTF-8 텍스트? PNG? 다른 것? – Tommy

+0

변수가 있습니다. 사용자가 URL을 입력하도록 허용하고 NSData 객체에 NSData 객체를 다운로드 한 다음 요청의 응답 헤더가 무엇인지에 따라 표시하려고합니다. –

+0

커스텀 데이터 포맷을 만들지 않았다면, NSData는 더 이상 요청 헤더를 가지고 있지 않습니다. 그것은 단지 몸입니다. 뷰에 대한 URL을 직접 지정하십시오. – Tommy

답변

0

Content-Type 헤더가 없으면 웹보기에서 데이터를 해석하는 방법을 알 수 없습니다. 이것이 Content-Type 헤더가 추가 된 이유입니다.

언제든지 재생할 수있는 네트워크 트래픽을 NSData 캡처하려는 경우 사용자 지정 NSURLProtocol을 작성하는 것이 좋습니다. http에 대한 핸들러를 작성하면 내장 된 핸들러를 대체합니다. 그것을 통해 추월 메모리를주고 실제 요청으로 리디렉션 할 수 있습니다.

0

NSString* newStr = [[NSString alloc] initWithData:theData encoding:NSUTF8StringEncoding]; 

[self.webView loadHTMLString: newStr baseURL:nil]; 
+0

데이터가 HTML이 아니 어서 UTF-8이 아닐 수도 있지만 문제는 없다고 생각합니다. – Tommy

2

예처럼 해! NSData는 MIME 형식이 제대로 제공되면 UIWebView에서 처리됩니다. 이 코드 조각은 WebView에서 .docx 파일을로드합니다.

NSString *path = [urlFileInView path]; 
NSData *data = [[NSFileManager defaultManager] contentsAtPath:path]; 


webViewForDocsView.delegate = self; 
[webViewForDocsView loadData:data MIMEType:@"application/vnd.openxmlformats-officedocument.wordprocessingml.document" textEncodingName:@"UTF-8" baseURL:nil]; 
+0

죄송 합니다만, 저는'UIWebView'가 아닌'WebView'를 사용하고 있습니다. –

관련 문제