2015-07-12 2 views
2

Я следую этому руководству, чтобы сделать приложение для камеры, но учебник находится в Swift, и я использую Xcode 7 beta и Swift2.Как добавить устройство ввода для захвата в Swift2 и Xcode7 beta?

http://jamesonquave.com/blog/taking-control-of-the-iphone-camera-in-ios-8-with-swift-part-1/

Я слышал, что Swift2 имеет другой метод обработки ошибок, поэтому я предполагаю, что эта часть кода должна быть изменена. Но я не знаю, как это сделать. Кто-нибудь может мне с этим помочь? Благодаря!

var err : NSError? = nil 
     captureSession.addInput(AVCaptureDeviceInput(device: captureDevice, error: &err)) 

     if err != nil { 
      println("error: \(err?.localizedDescription)") 
     } 
+0

Вы можете найти ответ на этот вопрос https://developer.apple.com/library/prerelease/ios/documentation /Swift/Conceptual/Swift_Programming_Language/ErrorHandling.html#//apple_ref/doc/uid/TP40014097-CH42-ID512 – Kevin

+0

Я изо всех сил пытаюсь вывести ответ из ссылки, которую вы предоставили @Kevin. Могли бы вы дать явный ответ для данного примера? спасибо – Ian

ответ

1

Объяснение новой обработки Swift ошибок - Error-Handling in Swift-Language

let captureSession = AVCaptureSession() 
let captureDevice: AVCaptureDevice 
do { 
    let input = try AVCaptureDeviceInput(device: captureDevice) 
    captureSession.addInput(input) 
} 
+5

Хотя этот код может ответить на вопрос, предоставляя дополнительный контекст относительно того, почему и/или как этот код отвечает на вопрос, улучшает его долгосрочную ценность. – JAL

9

Для того, чтобы получить код, который вы размещены в соответствии с новыми требованиями к обработки ошибок в быстром 2 нужно, чтобы заменить строки кода с следующее:

var err : NSError? = nil 
do { 
    let input = try AVCaptureDeviceInput(device: captureDevice) 
    captureSession.addInput(input) 
} catch _ { 
    print("error: \(err?.localizedDescription)") 
} 

причина этого изменения состоит в том, что компания Apple изменила способ, что нужно для обработки ошибок для того, чтобы сделать кодирования меньше ошибок. Теперь вам нужно иметь инструкцию do catch для любого вызова, который будет вызывать ошибку. Вызов, который может быть брошен и ошибка, должен быть в инструкции do, и обработка ошибок должна быть найдена в инструкции catch. Там немного более подробно, как на причину этого изменения в следующей ссылке:

https://www.hackingwithswift.com/new-syntax-swift-2-error-handling-try-catch

+1

Можете ли вы сделать это более очевидным для спрашивающего, каков фактический ответ и почему этот ответ работает? –

+0

Определенно, будучи новым для сайта, я должен отредактировать существующий ответ или сделать ревизию в качестве комментария? Спасибо за совет! – Chris

+0

Просто отредактируйте существующий ответ, и вы должны быть хорошими. Рад, что вы участвуете в этом сайте! –