swift 3中的dispatchqueue显示为未parsing的标识符

我正尝试在主线程上asynchronous录制/录制video。 但是,当我调用dispatch.main.async ,我总是得到错误:

 use of unresolved identifier DispatchQueue 

从WWDC到苹果的文档,我都到处寻找,但我没有看到这种types的弃用证据。

这里是代码:

  if !self.cameraEngine.isRecording { if let url = CameraEngineFileManager.temporaryPath("video.mp4") { self.cameraButton.setTitle("stop recording", forState: []) self.cameraEngine.startRecordingVideo(url, blockCompletion: { (url: NSURL?, error: NSError?) -> (Void) in if let url = url { DispatchQueue.main.async { self.cameraButton.setTitle("start recording", for: .normal) CameraEngineFileManager.saveVideo(url, blockCompletion: { (success: Bool, error: Error?) -> (Void) in if success { let alertController = UIAlertController(title: "Success, video saved !", message: nil, preferredStyle: .alert) alertController.addAction(UIAlertAction(title: "Ok", style: .default, handler: nil)) self.present(alertController, animated: true, completion: nil) } }) } } }) } } else { self.cameraEngine.stopRecordingVideo() } } 

你可以放

 import Foundation 

要么

 import Dispatch 

在您的代码开始使用DispatchQueue类没有任何问题。

这里的赠品是这样的:

 self.cameraButton.setTitle("stop recording", forState: []) 

不是Swift 3 。 因此你的文件是一个Swift 2.3文件。 所以没有DispatchQueue这样的东西。 你应该使用

 dispatch_async(dispatch_get_main_queue()) { ... 

我认为你的框架列表中没有其中之一。 尝试导入其中之一并尝试将DispatchQueue放入您的文件中。

 import Foundation import UIKit // Any System Framework 

如果您的文件不是Swift文件,或者您的文件是Swift文件,但是顶部没有任何框架,则可能发生这种情况。