質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

2792閲覧

アルバムで選んだ写真の処理

meia

総合スコア26

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2016/09/28 12:21

###前提・実現したいこと

環境は
Xcode7.3
swift

iOSでフォトライブラリから画像を取得する方法
Swiftでカメラロールから写真データを保存する話
を参考に、
QBImagePickerを使って見たのですが、写真を選んだ後の処理方法が分からないので、どなたか教えていただきたいです

###発生している問題・エラーメッセージ

fatal error: unexpectedly found nil while unwrapping an Optional value

###該当のソースコード

import UIKit import QBImagePickerController import AssetsLibrary var appDelegate:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate //AppDelegateのインスタンスを取得 class SecondViewController: UIViewController,QBImagePickerControllerDelegate { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } @IBAction func album(sender: AnyObject) { pickImages() } func pickImages(){ let picker = QBImagePickerController() picker.delegate = self picker.allowsMultipleSelection = true picker.minimumNumberOfSelection = 1 picker.maximumNumberOfSelection = 2 picker.showsNumberOfSelectedAssets = true //let navigater = UINavigationController() self.presentViewController(picker, animated: true, completion: nil) } func imagePickerController (picker:QBImagePickerController, didSelectAssets assets: [AnyObject]!){ //var getImage:UIImage? for asset in assets { let representation: ALAssetRepresentation? = asset.defaultRepresentation() appDelegate.getImage = UIImage(CGImage: representation!.fullResolutionImage().takeUnretainedValue()) } self.dismissViewControllerAnimated(true,completion: nil) } func qb_imagePickerControllerDidCancel(picker: QBImagePickerController!) { self.dismissViewControllerAnimated(true, completion: nil) } }

###試したこと

自分なりにObjective-CのものをSwiftに対応させてみたのですが、写真を選んだ後に「Done」を押しても、getImageが値を取得していないようです。

そのため、getImageを別のところで使うと
fatal error: unexpectedly found nil while unwrapping an Optional value
と出てしまいます。

正しい使い方のわかる方がいらしたら、教えていただけると助かります

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

コードを実行してみましたが同じようにDelegateメソッドが呼ばれませんでした。
以下のissueにも同じ症状が上がっているようです。

done button not called #85

あまり使ったことがないので間違えているかも知れませんが、以下のDelegateがよばれてその中でしたらUIImageが取得できました。

swift

1func qb_imagePickerController(imagePickerController: QBImagePickerController!, didFinishPickingAssets assets: [AnyObject]!) { 2 3 for asset in assets { 4 5 let manager = PHImageManager.defaultManager() 6 let option = PHImageRequestOptions() 7 var image = UIImage() 8 option.synchronous = true 9 manager.requestImageForAsset(asset as! PHAsset, targetSize: CGSize(width: 100.0, height: 100.0), contentMode: .AspectFit, options: option, resultHandler: {(result, info)->Void in 10 image = result! 11 // imageを取得 12 13 }) 14 } 15 16 dismissViewControllerAnimated(true,completion: nil) 17}

投稿2016/09/29 14:59

_Kentarou

総合スコア8490

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meia

2016/10/02 13:10

回答ありがとうございます! 追加で質問して申し訳ないのですが、doneを押した段階でimageにUIImageが入っているということでいいのでしょうか? imageをappDelegate.getimageに変えたのですが、やはり同様のエラーが出てしまいました。 issueもざっくり読んでみたのですが、QBの仕様でしょうがないのでしょうか? ご存知だったらでいいので、教えていただけると助かります!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問