我試圖從rss提要檢索XML,獲取每篇文章的鏈接,然後從這些文章中提取信息。我使用AEXML獲取xml,並使用ReadabilityKit進行鏈接提取。Async調用中的異步調用未執行
我已成功從XML拉出鏈接,但Readability上的解析器調用從不執行。我不想在主線程中使用它,因爲它阻止了所有UI,但到目前爲止,這是我使它工作的唯一方法。代碼如下(刪除了調度得到主隊列):
func retrieveXML() {
let request = NSURLRequest(URL: NSURL(string: "<XML URL HERE>")!)
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
(data, response, error) in
if data == nil {
print("\n\ndataTaskWithRequest error: \(error)")
return
}
do {
let xmlDoc = try AEXMLDocument(xmlData: data!)
for child in xmlDoc.root.children {
if let postURL = child["id"].value {
let url = NSURL(string: postURL)
let parser = Readability(url: url!)
let title = parser.title()
print("TITLE: \(title)")
}
}
} catch {
print(error)
}
}
task.resume()
}
您是否試過這個? 'DispatchQueue.main.async { 設URL = NSURL(字符串:postURL) 讓解析器=可讀性(網址:網址!) 讓標題= parser.title() 打印( 「TITLE:\(標題)」) }' – heikomania
@heikomania不編譯= /。但是,如果我在主隊列中放置了「解析器=可讀性...」行,它會阻止我不想要的用戶界面。 – kerbelda
是的,這就是Swift 3並調度到主隊列,但這個概念是正確的:'Readability'是死鎖的,所以你必須將它異步分派到另一個隊列。但是,我同意,你不應該爲此使用主隊列。當然,如果你使用的是Swift 2,那麼使用Swift 2語法。 – Rob