2012-07-21 4 views
0

안녕하세요, 저는 웹 서버에서 yaml 파일을 가져오고 있습니다. 지역 YAML 파일과 큰 내 NSInputStream 작업 (사용하여 파일 : //filename.yaml URL 스킴)NSInputStream은 서버에서 파일을 가져 오지 않고 로컬 파일과 함께 작업합니다.

여기에 관련 코드가있다 :

NSInputStream * stream = [[NSInputStream alloc] initWithURL:yamlURL]; 

YAML의 URL은 http 같은 것이있다 : // MyIP에 : 8000 /assets/test.yaml 브라우저에서 열면 파일 다운로드가됩니다 ...

아무 생각 나니?

+0

을. 'initWithURL'과'inputStreamWithURL'는 같은 URL을 사용하여 NSURLConnection을 사용하여 문제의 파일을 성공적으로 다운로드 할 수있을지라도'nil'을 반환합니다. 'initWithURL'을 성공 시키면 성공합니까? – Rob

+0

내 의견보기 ... 기본적으로 파일 작업 전에 NSData로 다운로드하여 해결했습니다. – Msencenb

+1

예, 잘 알고 있습니다. 'NSData'는 큰 (수백 MB) 파일에는 실용적이지 않습니다. 분명히, 나는 로컬 파일에 다운로드 할 수있다. (나는 이미 주어진 시간에 NSData에 모든 것을 로딩하는 것을 피하는 다운로더 클래스를 가지고있다.) 그러나 그것조차도 엄청나게 비효율적이다. (나는 큰 홀딩 다운로드가 끝나기를 기다려야한다. 웹 기반 스트리밍 솔루션을 원할 때 사용하기 전에). 내가 원하는 것을하기 위해 NSInputStream을 서브 클래스하려고하는데, 어리석은 것처럼 보일 것이다.'inputStreamWithURL'은 그냥 일을해야한다. 나는 내 자신을 굴리기 전에 그 일을 할 수 있는지 알고 싶다. – Rob

답변

0

initWithURL을 수행 한 후에 * 스트림으로 수행중인 작업이 있습니까?

로컬 파일로 삽입 된 InputStream에서 콘텐츠를 가져 오는 경우 InputStream을 가져 와서 Safari로 리디렉션하도록 NSOutputStream을 만들어야합니다. 그래서 initWithURL : url로 호출하면 많은 정보를 얻을 수 있지만 Safari에서 http : // url을 호출하면 content-type을 확인하고 파일을 출력하려고합니다. 그러나 사파리가 mulit-part mime yaml 파일 인 경우 내용을 표시 할 수 있다고 생각하지 않습니다.

+0

그래서 많은 사람들이 'nsinput 스트림의 경우 pareshkumar에 의해 말한 것처럼 실제로 url (또는 로컬 파일)에서 NSData로 다운로드 한 다음이 데이터로 입력 스트림을 초기화해야합니다. 훨씬 안정적이고 사용하기 쉽습니다. – Msencenb

1

임 방법이 너무 늦게,하지만 난 그냥, 그래서 여기에이 정확한 문제를 해결 간다 :

이 소리만큼 바보

The NSStream class does not support connecting to a remote host on iOS. 

, 워드 프로세서 당으로 initWithURL 만 작동합니다 로컬 파일 그러나 쉽게 수정 ... 사과에서

전체 설명과 코드 샘플은 여기 프로그래머 찾을 수 있습니다 : 저도 같은 문제에 봉착 https://developer.apple.com/library/mac/documentation/cocoa/Conceptual/Streams/Articles/NetworkStreams.html#//apple_ref/doc/uid/20002277-BCIDFCDI

관련 문제