2016-07-25 72 views
1

Iam即将更新Objective C中的发布项目,以满足Apple仅支持Ipv6的新需求。我的AFNetworking libray现在是1.2.1。我怀疑这是问题所在。我想更新到最新版本只支持IPv6,但是当运行吊舱安装我得到这个错误将AFNetworking从版本1.2.1更新到3.1.0

无法满足以下要求[!]:通过Podfile.lock

  • AFNetworking (~> 3.1.0)要求Podfile
  • AFNetworking (= 3.1.0)要求
  • AFNetworking (~> 1.2.1)要求AFRaptureXMLRequestOperation (1.0.2)

这是我完成荚文件

platform :ios, '7.0' 

def shared_pods 
    pod 'RaptureXML' 
    pod 'Realm' 
end 

def ios_pods 

    pod 'AFRaptureXMLRequestOperation' 
    pod 'GoogleAnalytics-iOS-SDK', '~> 3.0.9' 
    pod 'KGModal', '~> 0.0.1' 
    pod 'MagicalRecord' 
    pod 'MHNatGeoViewControllerTransition', '~> 1.0' 
    pod 'SVProgressHUD', '~> 1.0' 
    pod 'UALogger', '~> 0.2.3' 
    pod 'Reachability', '~> 3.1.1' 
    pod 'RegexKitLite', '~> 4.0' 
    pod 'SSKeychain', '~> 1.2.1' 
    pod 'TTTAttributedLabel' 
    pod 'TPKeyboardAvoiding', '~> 1.1' 
    pod 'UIAlertView+Blocks', '~> 0.7' 
    pod 'UIActivityIndicator-for-SDWebImage', '~> 1.0.3' 
    pod 'SevenSwitch', '~> 1.3.0' 
    pod 'ZXingObjC', '~> 3.0' 
    pod 'DeviceUtil', '~> 1.2' 
end 

有没有办法使用AFRaptureXMLRequestOperation与AFNetworking 3.0吗?或任何其他解决方案?任何帮助非常感谢。谢谢

+0

感谢您的帮助。有没有其他方法可以支持AFNetworking 3.x? –

+0

谢谢,我会尝试。你有关于AFXMLParserResponseSerializer的任何参考链接或任何教程吗? –

+0

请参阅下面的答案。 – Rob

回答

2

AFRaptureXMLRequestOperation小类AFHTTPRequestOperation,但该类不再存在于AFNetworking 3.x中。 AFNetworking 3.x不能使用AFRaptureXMLRequestOperation

如果您只是使用AFNetworking 3.x解析XML响应,则可以使用AFXMLParserResponseSerializer。它返回一个NSXMLParser

所以,对于responseObject设置delegate,然后调用parse它:

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; 
manager.responseSerializer = [AFXMLParserResponseSerializer serializer]; 
manager.responseSerializer.acceptableContentTypes = [manager.responseSerializer.acceptableContentTypes setByAddingObject:@"application/rss+xml"]; // this line is only needed if parsing RSS feed 

[manager GET:@"https://developer.apple.com/news/rss/news.rss" parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { 
    NSXMLParser *parser = responseObject; 
    parser.delegate = self; 
    self.titles = [NSMutableArray array]; 
    [parser parse]; 
    NSLog(@"%@", self.titles); 
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { 
    NSLog(@"%@", error); 
}]; 

你必须编写自己的代码NSXMLParserDelegate,虽然。因此,解析片头苹果的RSS提要的XML的,我加了两个属性:

@property (nonatomic, strong) NSMutableArray *titles; 
@property (nonatomic, strong) NSMutableString *elementValue; 

然后执行以下NSXMLParserDelegate方法:

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary<NSString *,NSString *> *)attributeDict { 
    if ([elementName isEqualToString:@"title"]) { 
     self.elementValue = [NSMutableString string]; 
    } 
} 

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string { 
    [self.elementValue appendString:string]; 
} 

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName { 
    if ([elementName isEqualToString:@"title"]) { 
     [self.titles addObject:self.elementValue]; 
     self.elementValue = nil; 
    } 
} 
+0

感谢您的解释。我再试试。我的问题是升级这些经理与AFNetworking 3.x一起工作。你能帮忙看看这些文件,并建议迁移的任何改变?非常感谢! !https://1drv.ms/f/s!At_ezahqccq3it1dbThVHBz9hok1xw –

+0

你必须用'AFHTTPSessionManager'替换'AFHTTPClient',并用'GET'和'POST'调用(适当时)替换你的'AFHTTPRequestOperation'。而且,如上所述,您必须用'AFXMLParserResponseSerializer'用'GET' /'POST'替换'AFRaptureXMLRequestOperation'。 – Rob

+0

谢谢。我仍然在为这些移民而奋斗。这里可以帮助看看实际的方法吗?http://stackoverflow.com/questions/38580561/afnetworking-3-x-migration-and-xml-parser –

相关问题