2009-08-16 2 views
0

Я ранее использовал initWithContentsOfURL для загрузки plist в NSDictionary, но это зависает пользовательский интерфейс при запуске в том же потоке, поэтому теперь я перешел в NSURLConnection, проблема в том, что я больше не могу вызвать метод для init NSDictionary с NSMutableData. Каков наилучший способ взять NSMutableData и поместить его в NSDictionary?NSDictionary From NSMutableData

ответ

3

Что вам нужно NSPropertyListSerialization:

NSDictionary *myDict = [NSPropertyListSerialization propertyListFromData:myData mutabilityOption:NSPropertyListImmutable format:nil errorDescription:nil]; 

ли Простейший вариант.

1

Не зная точно, что вы пытаетесь сделать, я собираюсь сделать удар; даже если он не работает, я уверен, что вы можете адаптировать его для своих целей.

NSString *s = [[NSString alloc] initWithBytes:[mutableData bytes] length:[mutableData length] encoding:NSUTF8StringEncoding]; 
NSString *path = NSTemporaryDirectory(); 
path = [path stringByAppendingPathComponent:@"tmpfile.txt"]; 
if ([s writeToFile:path atomically:NO encoding:NSUTF8StringEncoding error:nil]) { 
    NSDictionary *d = [[NSDictionary alloc] initWithContentsOfFile:path]; 
} 

На простом английском языке, создать строку из приведенных данных, пишу, что к временному файлу, а затем загрузить временный файл в NSDictionary объекта.

Этот код далек от совершенства (нужны такие вещи, как проверка ошибок и т. Д.), Но он может вас начать.

Предостережение: Я писал программное обеспечение Cocoa в течение нескольких лет, но я никогда не касался iPhone, так что это предположение.

0

Имеет ли ваш NSDictionary другие данные, которые необходимо сохранить?

В соединении: didReceiveResponse: метод (делегат NSUrlConnection), вы можете скопировать старый NSDictionary в NSMutableDictionary, а затем вставить в него данные ответа на URL. Затем преобразуйте NSMutableDictionary в новый NSDictionary.

Смежные вопросы