提问人:Minato 提问时间:7/5/2018 更新时间:7/5/2018 访问量:295
如何使用 AFNetworking 3.0 解析 XML 数据
How can I parse XML data using AFNetworking 3.0
问:
我正在做一个简单的项目来使用这个链接显示天气预报,我实现了以下代码来获得结果......
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
[manager GET:@"https://graphical.weather.gov/xml/SOAP_server/ndfdXMLserver.php?wsdl" parameters:nil progress:nil success:^(NSURLSessionDataTask * task, id responseObject) {
NSData * data = (NSData *)responseObject;
NSLog(@"Response String: %@", [NSString stringWithUTF8String:[data bytes]]);
}failure:^(NSURLSessionDataTask * operation, NSError * error) {
NSLog(@"Error the result is unfound in the database %@", error);
}];
在上面的代码中,我终于检索到了XML,但我不知道如何解析它并使其显示在表视图中......我是ios开发的新手,任何人都可以帮我做些什么来获取数据并将其显示在tableview中。
答:
0赞
Mohammad Reza Koohkan
7/5/2018
#1
每个 xml 文件(如属性列表)都可以转换为 NSDictionary,我是 swift 开发人员,但是,如果您在 xml 中有数据,则可以将其转换为 NSDictionary
在 Swift 4 中:
do {
if let plist = try PropertyListSerialization.propertyList(from: plistData,
format: nil)
as? NSDictionary {
// Successfully read list.
print(plist)
} else {
print("not a dictionary")
}
} catch let error {
print("not a plist:", error.localizedDescription)
}
在 Objective-C 中:
NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsPath = [paths objectAtIndex:0];
NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"myPlist.plist"];
if (![[NSFileManager defaultManager] fileExistsAtPath:plistPath]) {
plistPath = [[NSBundle mainBundle] pathForResource:@"myPlist" ofType:@"plist"];
}
NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:plistPath];
在这种情况下,您可以传递您的数据而不是 Plist
现在,您可以将数据缓存到模型中,并在 UITableView 中显示它们
祝你好运;)
评论