Предполагая, что у вас есть полные данные (*), вы захотите изучить класс NSPropertyListSerialization
.Его метод +propertyListWithData:options:format:error:
должен получить то, что вы ищете, и вы можете использовать параметр options, чтобы получить результаты в виде изменяемого словаря или массива.
(*) Похоже, у вас есть полные данные, поскольку вы говорите, что можете записать его в файл, а затем прочитать его, используя dictionaryWithContentsOfFile:
или подобное, но это не похоже на то, что вы гарантированно получите его из кода, который вы показали.Вы создаете новые данные в -connection:didReceiveData:
, но этот метод делегата может вызываться несколько раз, когда данные поступают по частям.(Полагаю, что это случилось из-за того, что вы пришли для тестирования целиком… это может не всегда быть правдой, особенно на мобильном устройстве.) Вместо этого вы, вероятно, захотите создать пустые изменяемые данные при запуске NSURLConnection
(или в -connection:didReceiveResponse:
), добавьте его в -connection:didReceiveData:
и проанализируйте в -connectiondidFinishLoading:
.Или, что еще лучше, поскольку анализатор списка свойств в любом случае ничего не может сделать с частичными данными, используйте новый +[NSURLConnection sendAsynchronousRequest:queue:completionHandler:]
, если вы нацелены на iOS 5.0 +.