канонический способ чтения plist из URL в NSDictionary? Как контролировать время ожидания?

У меня есть сервлет, который обслуживает XML-файл plist. Как лучше всего засунуть это в NSDictionary? У меня это в основном работает с:

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

Но тогда я не могу контролировать время ожидания; Я бы не хотел, чтобы мой пользовательский интерфейс зависал на 60 секунд только потому, что сервер (который я не могу контролировать) шипит. Я знаю о NSURLRequest, что позволит мне сделать следующее:

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

Но я не совсем понимаю, как передать это в NSDictionary.


person George Armhold    schedule 13.06.2009    source источник


Ответы (1)


Вам нужно сделать это, используя асинхронные методы. Начните с этого ответа/сообщения:

Могу ли я сделать POST или GET запросы из приложения iphone?

Это даст вам ваши данные и поместит их в переменную: responseData. Теперь вам нужно добавить свой код, чтобы преобразовать его в NSDictionary следующим методом:

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

Я нашел 2 возможных способа конвертировать NSData в NSDictionary. Это прямо из Apple Руководство по архивам и сериализации.

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];
person Corey Floyd    schedule 14.06.2009
comment
Отлично, спасибо, Кори. Пришел искать один путь... ты дал мне два. - person Chris Hatton; 26.03.2013