2016-07-25 96 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 –

相關問題