Swift在后台解析XML
问题描述:
我在Swift 3中编写了一个iOS应用程序,我正在解析一个非常大的XML文件(103558行),并使用Swift的内置XMLParser从中提取所需的所有信息(用于调用NSXMLParser)没有任何问题。Swift在后台解析XML
主要的问题是,在我的应用程序中,一旦我的应用程序加载,我需要所有这些信息,因此UI会锁定12秒钟以便解析完成(只要第一个UI页面负荷)。
在研究了很多在线和Apple文档后,我发现除了一些Objective-C代码之外,我无法弄清楚如何使用Swift 3。我的主要问题是,有没有办法在后台线程或异步使用XMLParser或其他解析器?
在此先感谢。
科尔
答
唯一的操作,你不能在后台线程执行是一个UI操作。
的NSXMLParser同步解析调用它
所以,如果你拨打的NSXMLParser在后台线程,所有的解析会在后台线程发生的线程上的数据。
let backgroundQueue = DispatchQueue(label: "com.app.queue",
qos: .background,
target: nil)
backgroundQueue.async {
//call to 'parse' function of XMLParser
DispatchQueue.main.async {
//pass parsing result to UI on main thread
}
}
虽然在后台线程中正在分析xml,但您可以继续向用户显示活动指示符(在主线程上)。这样,当你的xml被解析时,你的UI不会被锁定。