page_adsence

2015年10月27日火曜日

MailCore2をSwiftプロジェクトで使う

初めてiOSアプリを作るのですが、メール周りの機能が欲しかったので、下記のライブラリを使って実装してみようと思ったのですが、
初めて過ぎて何をどうすればいいのかわからなかったのでメモしておく。
とりあえず今回の記事ではSwiftからObjective-Cを使える様にする所までやってみる。 使ったのはXcode7。

まず、Xcodeで新しいプロジェクトを作成しておく。
今回はSingleViewApplicationで作る。

適当なプロジェクト名をつける

保存場所を指定して作成ボタンをクリック

で、作成が終了したらXcodeは終了しておく。


続いて使用したかったライブラリをインストールしていく。 使いたかったライブラリはこれ。
■MailCore2
https://github.com/MailCore/mailcore2

CocoaPodsでインストール出来るので、ターミナルを起動させて、CocoaPodsをインストールする。
$ sudo gem install cocoapods
Password: ← 自分のMacのログインパスワードを入力
Fetching: nap-1.0.0.gem (100%)
Successfully installed nap-1.0.0
Fetching: cocoapods-core-0.39.0.gem (100%)
Successfully installed cocoapods-core-0.39.0
Fetching: claide-0.9.1.gem (100%)
Successfully installed claide-0.9.1
Fetching: xcodeproj-0.28.2.gem (100%)
Successfully installed xcodeproj-0.28.2
Fetching: cocoapods-downloader-0.9.3.gem (100%)
Successfully installed cocoapods-downloader-0.9.3
Fetching: cocoapods-search-0.1.0.gem (100%)
Successfully installed cocoapods-search-0.1.0
Fetching: cocoapods-stats-0.6.2.gem (100%)
Successfully installed cocoapods-stats-0.6.2
Fetching: cocoapods-try-0.5.1.gem (100%)
Successfully installed cocoapods-try-0.5.1
Fetching: cocoapods-trunk-0.6.4.gem (100%)
Successfully installed cocoapods-trunk-0.6.4
Fetching: molinillo-0.4.0.gem (100%)
Successfully installed molinillo-0.4.0
Fetching: cocoapods-0.39.0.gem (100%)
Successfully installed cocoapods-0.39.0
Parsing documentation for nap-1.0.0
Installing ri documentation for nap-1.0.0
Parsing documentation for cocoapods-core-0.39.0
Installing ri documentation for cocoapods-core-0.39.0
Parsing documentation for claide-0.9.1
Installing ri documentation for claide-0.9.1
Parsing documentation for xcodeproj-0.28.2
Installing ri documentation for xcodeproj-0.28.2
Parsing documentation for cocoapods-downloader-0.9.3
Installing ri documentation for cocoapods-downloader-0.9.3
Parsing documentation for cocoapods-search-0.1.0
Installing ri documentation for cocoapods-search-0.1.0
Parsing documentation for cocoapods-stats-0.6.2
Installing ri documentation for cocoapods-stats-0.6.2
Parsing documentation for cocoapods-try-0.5.1
Installing ri documentation for cocoapods-try-0.5.1
Parsing documentation for cocoapods-trunk-0.6.4
Installing ri documentation for cocoapods-trunk-0.6.4
Parsing documentation for molinillo-0.4.0
Installing ri documentation for molinillo-0.4.0
Parsing documentation for cocoapods-0.39.0
Installing ri documentation for cocoapods-0.39.0
11 gems installed

これでCocoaPodsが使えるようになった。
試しにpodコマンドが使えるのか確認してみる。
$ pod --version
0.39.0

きちんとバージョンが表示されたので、これでCocoaPodsのインストール作業は完了。
これからmailcore2をCocoaPods経由でインストールしていく。
まずターミナルを起動し、Xcodeで作成したプロジェクトファイル(*.xcodeproj)のおいてあるディレクトリへ移動する
自分の場合は「/Users/user_name/Documents/iPhoneApps/mailCoreTest」というプロダクトを作ったのでそこへ移動した。
$ cd /Users/user_name/Documents/iPhoneApps/mailCoreTest

対象のディレクトリへ移動したらPodfileというファイルを作成し、下記の通り記述して保存する。 PodfileはPHPでいうcomposer.jsonみたいなもの。
$ vi Podfile
platform :ios, “7.0”
pod 'mailcore2-ios', '~> 0.5.1'

で、mailcore2をインストールする。
$ pod install
Updating local specs repositories
Analyzing dependencies
Downloading dependencies
Installing mailcore2-ios (0.5.1)
Generating Pods project
Integrating client project

[!] Please close any current Xcode sessions and use `mailCoreTest.xcworkspace` for this project from now on.
Sending stats
Pod installation complete! There is 1 dependency from the Podfile and 1 total
pod installed.
以上でmailcore2を使う事前準備が完了。
mailCoreTest.xcworkspaceというファイルが出来ているので、これをXcodeで開く。

するとPodsというプロジェクトがmailCoreTestの中に出来ている。

後はSwiftプロジェクトからObjective-Cを呼べる様にXcode側で設定してやる

SwiftからObjective-Cのコードを呼ぶためには、Bridging-Header.hという特殊なヘッダファイルを用意してやる必要がある。
で、追加してみる。(Objective-Cのソースがプロジェクトに追加されると、自動で生成される。)
自分で追加する場合は下記の通り。

XcodeのFile -> New -> Fileを選択。もしくは⌘Nを押す。

Header Fileを選択。

プロジェクト名-Bridging-Headerという名前を付けて保存


作成したヘッダファイルの中に下記を追加して保存。
#import <MailCore/MailCore.h>

続いて、追加したヘッダファイルをXcodeに認識させる。
Build Settings -> Swift Compiler – Code Generation
”Install Objective-C Compatibility Header”が”Yes”
”Objective-C Bridging Header”に、”$(SRCROOT)/$(PROJECT)/$(SWIFT_MODULE_NAME)-Bridging-Header.h”と入力する。(実際にBridging-Header.hファイルがあるパスを指定する。)

以上でSwiftからObjective-Cが呼べる様になる。