2009-06-13 9 views
1

나는 plist XML 파일을 제공하는 서블릿을 가지고있다. 이것을 NSDictionary에 속이는 가장 좋은 방법은 무엇입니까? 기본적으로이 작업을 수행 할 수 있습니다.URL에서 NSDictionary로 plist를 읽는 표준 방법? 타임 아웃을 제어하는 ​​방법?

NSDictionary* dict = [ [ NSDictionary alloc] initWithContentsOfURL: 
        [NSURL URLWithString: @"http://example.com/blah"] ]; 

그러나 시간 초과를 제어 할 수 없습니다. 차라리 내 UI가 60 초 동안 멈추지는 않을 것입니다. 왜냐하면 서버 (제어 할 수없는)가 뻔뻔 스러울 정도로 적합하기 때문입니다.

NSURLRequest *theRequest=[NSURLRequest requestWithURL: 
     [NSURL URLWithString: @"http://example.com/blah" 
        cachePolicy:NSURLRequestUseProtocolCachePolicy 
      timeoutInterval:5 ]; 

그러나 나는 아주 NSDictionary에 해당 공급하는 방법을 볼 수 없습니다 : 나는 나 다음을 수행 할 것이다 약 NSURLRequest을 알고있다.

답변

5

비동기 방법을 사용하여이 작업을 수행해야합니다. 이 답변/포스트 시작 :

Can I make POST or GET requests from an iphone application?

이렇게하면 데이터를 가져오고 varibale에 배치됩니다 : 드 responseData를. 지금 당신은 다음의 방법에있는 NSDictionary로 변환하는 코드를 추가해야합니다 내가있는 NSDictionary에있는 NSData로 변환하는 두 가지 방법을 발견했습니다

- (void)connectionDidFinishLoading:(NSURLConnection *)connection; 

. 이 방법은 Apple Archives and Serializations Guide에서 직접 확인할 수 있습니다. 둘째

NSString *errorStr = nil; 
NSPropertyListFormat format; 

NSDictionary *dictionary = [NSPropertyListSerialization propertyListFromData: responseData 
       mutabilityOption: NSPropertyListImmutable 
       format: &format 
       errorDescription: &errorStr]; 

:

NSString *string = [[NSString alloc] initWithData:responseData encoding:NSASCIIStringEncoding]; 
NSDictionary *dictionary = [string propertyList]; 
[string release]; 
+0

우수, 감사 코리. 한 가지 방법을 찾아 왔어. 너는 나에게 두 가지를 주었다. –