2016-11-27 23 views
2

我一直試圖找到答案這個小時現在,但仍然無濟於事。我嘗試使用下面的代碼:Swift 3.0 DispatchQueue無法解析的標識符

func fetchPosts() { 
    ref.child("Amore").child("Posts").observeSingleEventOfType(.Value, withBlock: { (snapshot) in 
     if let dictionary = snapshot.value as? [String: AnyObject] { 
      let postMod = ReviewsPostModel() 

      postMod.setValuesForKeysWithDictionary(dictionary) 
      self.posts.insert(postMod, atIndex: 0) 
     } 

     DispatchQueue.main.asyncAfter(deadline: .now() + 0.2) { 
      self.tableView.reloadData() 
     } 
    }) 
} 

在斯威夫特3.0.1,但它說,「DispatchQueue」是一個懸而未決的標識符。我已經導入了Dispatch,並確保該課程指向了正確的目標文件。任何和所有的幫助,不勝感激。

+0

現在就試試吧。謝謝。 –

+0

@matt已經做到了這一點,但仍然給我一個未解決的標識符錯誤 –

+0

您在您的問題中發佈的代碼是否真實,實際的代碼複製並粘貼到您的問題中?您的實際代碼中可能存在錯誤,並未出現在您的問題中。 – rmaddy

回答

0

雖然你你正在使用Swift 3.0.1,你不是。你正在使用Swift 2.3。因此,DispatchQueue沒有這樣的東西。你的代碼需要這樣寫:

let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(0.2 * Double(NSEC_PER_SEC))) 
dispatch_after(delayTime, dispatch_get_main_queue()) { 
    self.tableView.reloadData() 
} 
+0

而完全一樣的東西是對於你鏈接到的另一個問題的真實性!有什麼機會...? – matt

+0

大多數情況下,嘗試使用Swift 2.3是沒有意義的,因爲它幾乎已經被Swift 3.x淘汰了。 OP最好是簡單地將他們的2.3代碼翻譯成3.x,而不是其他方式。就我個人而言,我發現上述2.3答案誤導/混淆,因爲我最初閱讀它意味着我需要將我的代碼更改爲從DispatchQueue移動*,實際上,移動應該*爲* DispatchQueue,因爲它是3.x功能。 – Gino

5

最近,我寫的一個簡單的swift腳本在Linux下運行時產生了這個錯誤。同樣的腳本在macOS下工作正常。

出於好奇,我在腳本的頂部添加了一個'import dispatch',它在Linux上運行良好。

+0

我的代碼在Xcode中編譯得很好。在Linux上,我還必須「導入調度」 – neoneye

+0

這應該是這篇文章的正確答案。 Swift在Linux和Mac上的編譯方式不同。 'import dispatch'是合適的解決方案。 –

相關問題