Подтвердить что ты не робот

Можно установить AFNetworking 2.0 с помощью Restkit

У меня появилось новостное приложение, которое выводит новости в формате XML в хранилищах локально в sqlite dbase.., что является прекрасным случаем для restkit.

Однако, я хотел бы также иногда извлекать данные xml вручную (т.е. и не хочу хранить его в dbase). Другими словами, я хотел бы запросить его непосредственно с AFNetworking. Мне нравится, как в AFNetworking 2.0 он автоматически анализирует xml, и поэтому я хочу использовать эту функцию.

Однако Restkit 2.0 связан с AFNetworking 1.3.. и поэтому, если я добавлю это в свой файл podfile:

pod 'RestKit', '~> 0.21.0'
pod "AFNetworking", "~> 2.0"

и запустите pod install. Я получаю следующую ошибку:

[!] Unable to satisfy the following requirements:
- `AFNetworking (~> 1.3.0)` required by `RestKit/Network (0.21.0)`- `AFNetworking (~> 2.0)` required by `Podfile`

В любом случае, вокруг?

4b9b3361

Ответ 1

В версии 1.3.0 у вас есть доступ к AFXMLRequestOperation, который должен выполнять ту же цель.

Было бы очень много работы по обновлению RestKit для использования версии 2.0 или переименованию, чтобы вы могли использовать обе версии...

Ответ 2

Быстрое и грязное решение может состоять в том, чтобы просто переименовать файлы afnetworking в af1networking и все классы/интерфейсы/константы в AF1xxxx. Если бы у нас были только пространства имен в Objective-C или у парней AFNetworking была бы префикс новой версии с AF2...

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

Альтернативой было бы использовать MKNetworkKit для сети - он аналогичен afnetworking/afnetworking2, но тогда у вас есть 2 разных сетевых библиотеки, и AFNetworking, похоже, прилагает больше усилий.

Ответ 3

Используя разветвленную версию XMLDictionary, я в основном добился того, чего хотел достичь, задав вышеуказанный вопрос выполнив следующее:

NSURL *url = [NSURL URLWithString:urlStr];
NSURLRequest *request = [NSURLRequest requestWithURL:url];

AFXMLRequestOperation *operation =
[AFXMLRequestOperation XMLParserRequestOperationWithRequest:request
 success:^(NSURLRequest *request, NSHTTPURLResponse *response, NSXMLParser *XMLParser) {

    NSDictionary *dict = [NSDictionary dictionaryWithXMLParser:XMLParser];
    // do stuff with dict        

 failure:failure:^(NSURLRequest *request, NSHTTPURLResponse *response, 
                   NSError *error, NSXMLParser *XMLParser){

    NSLog(@"somethign weng wrong in fetching news data: %@", 
                 [error localizedDescription]);
}];

[operation start];

Кредит идет Wain в комментариях :)