頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


Objective-CのプロジェクトからSwiftのクラスを使う

えらい苦労したよ。
タイトル通り、Objective-CのプロジェクトからSwiftのクラスを使いたかったんだわ。
手順で言うとSwiftのクラスをどこぞからドラッグ&ドロップするなり、New Fileで作成でもいいんだけど、Swiftのファイルを生成するじゃない。
するとXcodeが

Xcodeの質問画面

って聞いてくるけど、Objective-CからSwiftクラスを使うのなら関係ない(はず)。これは逆にSwiftからObjective-Cのクラスを使う時に使うファイル。だからNOを選択しても問題ないと思う。

やり方を調べると
#import “プロジェクト名-Swift.h”
でOK、とかあるんだけど、、、まずこれがはまったのよ。

Xcodeが自動的に作ってくれるよってどこ見ても書いてるけど、ウチのXcodeはぐーたらなのかやる気がないのかそんなファイル作ってくれなかったんだ。
しょうがないから自分でヘッダファイル作成してみたりしたんだけどうまくいかない。

ようやくたどり着いたのが、作ってるけど表示されないってこと。
ニャンですとー?!逆の場合(SwiftからObjCクラスを使う場合)だとプロジェクト名-Bridging-Header.hってファイルがちゃんとXcodeに出てたので勘違いしてたんだわ。

ってことで、
プロジェクト名-Swift.hってファイルはXcodeには表示されません。

ちなみに、ちゃんとファイルができていなければimport文でXcodeがそんなファイルねえよ!って教えてくれるはず。何も言わなければimportはできているんだろう。あと、
#import “プロジェクト名-Swift.h”
のファイル名上でcommand+クリックで中身を確認できる(何書いてるか理解できんけど)。


ところが、まだうまくいかなかったんだ、俺の場合。
Objective-CのSwiftのクラスからオブジェクトを作成する
MySwiftClass *object = [MySwiftClass new];
という部分で、
Use of undeclared identifier ‘MySwiftClass’
というエラーが出るのよ。

MySwiftClassはNSObjectを継承してるし、念のため@objcも書いたりしてるのにやっぱりだめ、、、
Swiftのプロジェクトからはちゃんと使えるクラス、という確認もしてたのに。

ようやく見つけたのがこのページ。
ios - Including Swift files in Objective-C - Stack Overflow

Swiftのクラス宣言の前に’public’を付けよ
という内容。
これでやっと成功。長かったな〜

<< Blenderで作った3DのデータをSwiftでMetalに使いた〜い!  TopPage  SwiftのExtensionでプロパティを追加 >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/946-1efcec4d




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.

FC2Ad