0
我正在努力提供我的應用程序相機功能。我正在學習一個教程(AppCoda:https://www.appcoda.com/avfoundation-swift-guide/)。我看過其他S.O.答案並且已經瞭解到,聲明的右側(下面)必須是可選的,以解決錯誤。我將如何使它成爲可選項並修復錯誤?條件綁定的初始化程序必須具有可選類型,而不是'[AVCaptureDevice]'
我正在努力提供我的應用程序相機功能。我正在學習一個教程(AppCoda:https://www.appcoda.com/avfoundation-swift-guide/)。我看過其他S.O.答案並且已經瞭解到,聲明的右側(下面)必須是可選的,以解決錯誤。我將如何使它成爲可選項並修復錯誤?條件綁定的初始化程序必須具有可選類型,而不是'[AVCaptureDevice]'
可選可以讓你有一個變量爲零。然後編譯器強制你在使用變量之前檢查是否有值。但是,如果您沒有可選項,那麼對您而言這是一件好事 - 您不必檢查確保始終有一個值的值。
因此你的情況,你不希望一個可選的有,重寫代碼如下:
let cameras = session.devices.flatMap { $0 }
guard !cameras.isEmpty else { throw CameraControllerError.noCamerasAvailable }
因爲顯然通話session.devices.flatMap { $0 }
返回數組[AVCaptureDevice]
,而不是一個可選的陣列[AVCaptureDevice]?
。因此,編譯器可以保證攝像機總是有一個數組值,而不是零。因此,您可以防止空陣列,這意味着沒有攝像頭(因爲攝像頭列表是空的)。
我想你忘了在.isEmpty和{ – coder
之間的其他聲明是的,謝謝注意 –