Swift在后台解析XML

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不会被锁定。