CocoaPodsやCarthageを使わないでRealmを導入する方法
今日はモバイルデータベースライブラリのRealmをiOSアプリに導入する準備を行います。
このような外部ライブラリを管理してくれる仕組みとしてCocoaPodsやCarthageがありますが、これらでライブラリをプロジェクトに新規でインストールするには、当然ながらネットワークの接続が必要となる時があります。私は移動中に勉強することが多くいつもいつも太い回線を使える訳では無いため、ちょっとした動作確認の際に管理ツールを使わないで済ましたい時がよくあります。
今回は本当によく使うライブラリであるRealmの「CocoaPodsやCarthageを使わないで」導入する方法を備忘録として残したいと思います。
目次
以下のサイトの Getting Start にある Download Realm for Swift をクリックしてRealmライブラリをダウンロードします。700MBくらいありますので回線の太い環境で予めダウンロードしておいて下さい。 Realm: Create reactive mobile apps in a fraction of the time
zipファイルは解凍しておく。 先ほどのサイトのトップに公式のInstall方法の記載場所があります。Installation のところです。ここの Dynamic Framework のタブに手動インストール方法が記載されています。 ただこの手順を信じきるとハマっちゃってうまくいかない可能性があります。(この投稿を書いている理由もそこにあります。)以降の手順も見比べながら進めて下さい。 Xcodeで新規プロジェクトを作成して下さい。 まず最適なXcodeバージョンのフォルダを開きます。今回、私が使用しているXcodeのバージョンは11.3.1なので swift-11.3 を開きます。 その中に以下の二つのファイルがあります。 これらをプロジェクトにドラッグアンドドロップして下さい。表示されるダイアログを確認し、Finishボタンを押す。 XcodeのProject navigator上で二つのFrameworkが入っているのを確認できればOKです。 プロジェクト設定の TARGERTS → Build Phases → Links Binary With Libraries に 引き続き Build Phases にて「+」ボタンを押して「New Copy Files Phase」を選択します。 「New Copy Files Phase」を選択すると「Copy files」という新しい項目が現れます。「Destination」をFrameworksに設定し、Project navigatorから 5.2と同じようにBuild Phases にて「+」ボタンを押して「New Run Script Phase」を選択します。 「New Run Script Phase」を選択すると「Run Script」という新しい項目が現れます。このShellの下図の赤枠箇所に 取り敢えずViewControllerあたりの ビルドしてみましょう。間違いなければビルドが通るはずです。お疲れさまでした。エラーが出る場合はもう一度手順を見直してみて下さい。 先でも書きましたが、2の公式の手順を信じきっちゃうとハマる可能性があります。というか、私はハマりました。普通は管理ツール使うかと思いますが、私のように困る人もいる可能性もありますので記事に残しておきました。1. Realmをダウンロード
(ダウンロードしたものをホームフォルダに常備しておくとふとした使い時に便利なのでおすすめです。)2.公式の手順を確認
3.プロジェクトを作成
4.Frameworkをインストール
その時、「Copy items if needed」にチェックが入っていることを要確認!
5.プロジェクト設定
5.1 Links Binary With Libraries
Realm.framework
と RealmSwift.framework
が指定されていることを確認する。
5.2 Copy Files
Realm.framework
と RealmSwift.framework
をドラッグアンドドロップして下さい。
5.3 Run Script
bash "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/Realm.framework/strip-frameworks.sh"
と記載して下さい。
6. import RealmSwift
import UIKit
の下に以下を記載してみましょう。import RealmSwift
7. 完成
まとめ
Realmの使い方についても次回以降書きたいなと思ってます。