このiOSアプリケーションは、カメラの画像をマスターディテールアプリの詳細ビューに配置します。アプリがインストールされ、写真撮影の操作が初めて要求されると、アプリがクラッシュします。コードに見られるように、アクセスが要求され、ユーザーにアクセスを要求するアラートが表示されます。完了ハンドラが成功を報告すると、アプリケーションがクラッシュします。再インストールせずにアプリを再起動すると、カメラは正常に動作し続けます。 iPhoneからアプリケーションを削除して再インストールすると、常に同じ結果が得られます。カメラアクセス要求は失敗しますが、初めてカメラにアクセスしたときのみSwift 3
コンソール出力: AVAuthorizationStatusは未定義です。
ユーザーに許可が与えられました。
libC++ abi.dylib:NSExceptionタイプのキャッチされていない例外で終了する
助けてください。 iOS 10、Xcode 8、Swift 3
編集:AVCaptureRequestでクラッシュします。私がAVCaptureRequestをコメントアウトすると、アプリケーションはクラッシュしません(もちろん写真はありません)。
@IBAction func takeDrugPhoto(_ sender: UIButton) {
if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.camera) {
let authStatus = AVCaptureDevice.authorizationStatus(forMediaType: AVMediaTypeVideo)
switch authStatus {
case AVAuthorizationStatus.authorized:
print("AVAuthorizationStatus is Authorized")
.....ここにコードの束......
case AVAuthorizationStatus.denied:
print("AVAuthorizationStatus is Denied")
.....ここにいくつかのコード.....
case AVAuthorizationStatus.notDetermined:
print("AVAuthorizationStatus is NotDetermined")
AVCaptureDevice.requestAccess(forMediaType: AVMediaTypeVideo, completionHandler: { (success) in
if success {
print("The user granted permission")
} else {
print("put up an alert telling the user the camera is not available")
DispatchQueue.main.async(execute: {() -> Void in
let ac = UIAlertController(title: "Camera Error", message: "For some reason, the camera in this device is not accepting your authorization. Check with your device supplier.", preferredStyle: .alert)
ac.addAction(UIAlertAction(title: "Ok", style: .default, handler: nil))
self.present(ac, animated: true, completion: nil)
})//back on main queue block
}//if success
})//requestAccessForMediaType block
}//switch
} else {//if device has a camera
let ac = UIAlertController(title: "Source not available.", message: "The camera is not available.", preferredStyle: .alert)
ac.addAction(UIAlertAction(title: "Ok", style: .default, handler: nil))
present(ac, animated: true, completion: nil)
}//if camera is no else
}//takeDrugPhoto
からトレース:
コードのどの部分でクラッシュしますか?そして上記の例外 –
情報のスタックトレースを提供してください。 – user2698617
'Info.plist'の' Privacy - Camera Usage Description'キーの値を追加しましたか? –