2014年6月14日土曜日

【iOS】SwiftでUIImagePickerControllerを使ううえで気付いたこと

今日は仙台Swiftもくもく勉強会第一回を開催しました。
その中でSwiftでUIImagePickerControllerを使って写真を撮ってカメラロールに保存するアプリを作りました。その上で気付いた事をいくつか書いていきます。
ソースはgithubにあげておきました。SwiftCam

基本的にはObjective-Cで書く方法と同じなのですが、微妙に引数や型が違かったりしたので、そこはUIImagePickerControllerの元ファイルをたどって見てもらえばObjective-Cではこういう名前のメソッドだったけどSwiftではこう書いてねっていうのが英語で書いてあります。

次にいくつか気付いた点や気になった点を書いていきます。

・関数の中で関数を書いてもエラーが出ない

Objective-Cだと関数の中で関数を宣言して書くとかそもそも有り得なかったし気にもしていなかったところなんですが、Swiftだとそれが可能です。可能であるがゆえに気付かないでviewDidAppearの中でデリゲートメソッドを書いて「あれ、なんでここ通ってないの?」ってことになりました。
気をつけましょう。

・Selectorの指定の仕方

UIImageWriteToSavedPhotosAlbumメソッドのcompletionメソッドとしてimageDidFinishSavingWithErrorContextInfoメソッドを独自に書きました。
その時UIImageWriteToSavedPhotosAlbumの中でSelectorの指定の仕方ってSwiftだとどうするんだろうと詰まりました。
結局のところソースの通りObjective-Cの時とそんな変わらず、複数の引数があったとしても

 "関数名:仮引数:仮引数:"

みたいに書いて出来ました。
あとはNSErrorで出来ていたところをNSErrorPointerで書けってのもほうほう、というところ。

・ソースコードの中に日本語が入っていると補完が効かない

補完は効かないものだと諦めていましたがどうも調べていると日本語がソースコードの中に入っていると効かないらしいというのがわかりました。
コメント部分もですし、気付きにくいのはファイルの先頭に書いてあるCreated by 誰々のところにも名前が日本語で入っていたりします。要注意。



とりあえず今日はこんなところでした。
一緒に調べて考えて、助けていただいた方に心から感謝です。

1 件のコメント: