>

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));

0 件のコメント: