我有一个新闻应用程序,它以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`
到底有没有?
答案 0 :(得分:3)
在版本1.3.0中,您可以访问AFXMLRequestOperation
,它应该实现相同的目标。
将RestKit更新为使用版本2.0或重命名以便您可以使用这两个版本将会有很多工作......
答案 1 :(得分:1)
快速而肮脏的解决方案可能是将afnetworking的文件重命名为af1networking,将所有类/接口/常量重命名为AF1xxxx。如果我们只在Objective-C中使用名称空间或者AFNetworking,那么新版本将使用AF2作为前缀......
我认为我所描述的内容可以通过项目搜索来完成,并在几小时后更换。
替代方案是使用MKNetworkKit进行网络连接 - 它类似于afnetworking / afnetworking2,但最终你拥有2个不同的网络库,AFNetworking似乎也付出了更多的努力。
答案 2 :(得分:0)
使用 XMLDictionary 的forked版本,我基本上通过以下方式询问上述问题,实现了我想要实现的目标:
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];