>

2015年9月24日木曜日

xCode7.0にしたらAVAudioPlayerの初期化処理で"Call can throw, but errors cannot be thrown out of a property initializer"というエラーが出るようになった件

エラー伝搬を無効にして良いなら下記のようにtryの後に!をつけることでエラーを回避できる。
let myPlayer:AVAudioPlayer = try! AVAudioPlayer(contentsOfURL: url)

xCode7.0にしたらNSUserDefaults.registerDefaultsで'NSMutableDictionary' is not convertible to '[String: AnyObject]'と言われるようになった件

NSUserDefaults.registerDefaultsで引数にNSMutableDictionaryのインスタンスを[String : AnyObject]にキャストして渡していたコードがXCode7.0にアップデートしたらエラーになった件。

原因は多分NSMutableDictionaryの[String : AnyObject]へのキャストが認められなくなったからと思われるので次のようにNSMutableDictionaryを使用せずに指定することで回避。
        
myNSUserDefaultsObj.registerDefaults(
            [
                "key1" : myObj1,
                "key2" : myObj2
            ]
        )

2015年8月29日土曜日

iTunes ConnectのマイAppのバンドルID(Bundle ID)を変更する。

iTunes Connectで登録したマイAppのバンドルIDはそのアプリがストアで公開される前であれば変更できます。(幾つかのサイトで変更できないといった記述が見受けられたがそれは誤りです。)
下記の通りiTunes ConnectのマイAppから当該Appを開いてメニューから その他>このAppについて を選択するとバンドルIDを変更できるダイアログが開きます。


2015年8月10日月曜日

iPython notebookでpyplotを使って表示する画像のサイズを変更する

iPython notebookで画像として可視化しながらデバッグするときに画像のサイズが変更できないで少し困った。以下のfigureという命令でfigsizeを指定することで変更できることが分かったのでメモ。
import matplotlib.pyplot as plt

plt.figure(figsize=(12,12))

2015年5月6日水曜日

swiftからobjective-cの関数を呼び出す時にエラーになる件

swiftから複数の引数を持つobjective-cの関数を呼び出そうとすると
Cannot invoke 'func' with an argument list of type
とか
Missing argument labels
みたいなエラーが出て困った件。

原因は次の二点だったのでメモ。

  • objective-cの関数の引数の型がintの場合はswiftではInt32の変数を入力しなくてはならない。Intではダメ。
  • objective-cの関数の引数のラベルもswiftのコードで記述しなくてはダメ。
以上をまとめるとswiftでは次のような呼び方をすることでコンパイルに通るようになった。味噌はInt32に変換していることと、二つ目以降の変数の前にコロンで区切ってラベル名(この例ではmon, mday)を記述していること。
MyClass.test(Int32(year), mon:Int32(month), mday:Int32(day));

startUpdatingLocationが常にerrorになる件

ちょっと面白いアイディアを思いついたのでiOSアプリ開発に挑戦することに。
ちなみに言語はswift、iOSは8を想定。

で、さっそくGPS情報を取得するところでつまずいた。plistも編集してコーディングしてもstartUpdatingLocationで常に結果がエラーになる。

原因は下記のサイトにある通りでシミュレータにLocationの設定をする必要があるらしい。
http://shirokai.hatenablog.com/entry/swift-gps

ただし、自分の環境ではLocationをCustom Locationに設定してもerrorのままだったので一度Locationの選択でAppleを選択したりCustomに戻したりしてみたら正常に動くようになった。