2016-11-27 76 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'是合适的解决方案。 –

相关问题