質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Realm

RealmとはSQLiteやCore Dataに代わるモバイルデータベースです。iOSとAndroidの両方でサポートされています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

2回答

6145閲覧

CarthageでRealm導入時に「No such module 'RealmSwift'」のエラー

Risney

総合スコア148

Realm

RealmとはSQLiteやCore Dataに代わるモバイルデータベースです。iOSとAndroidの両方でサポートされています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2020/08/25 03:25

編集2020/08/25 07:06

前提・実現したいこと

・前提
MacOS:Catalina ver10.15.5
Xcode11.6
RealmCocoa:v5.3.5
CarthegeVersion:0.35.0

・実現したいこと
CarthegeでRealm導入したい

発生している問題・エラーメッセージ

ViewController

1No such module 'RealmSwift' 2```![イメージ説明](a7261571de31b79ccfff8e973e5ebf2a.png) 3 4 5### 該当のソースコード 6 7######General 8![イメージ説明](c60b3b05dadf2440243d28112dadbd8a.png) 9 10######Build Phases 11```Runscript 12/usr/local/bin/carthage copy-frameworks

InputFiles

1Carthage/Build/iOS/Realm.framework 2Carthage/Build/iOS/RealmSwift.framework

イメージ説明

######CartFile
イメージ説明

試したこと

Realm公式ドキュメントも確認しましたが、
導入する際に漏れていることはない認識です。
(抜け漏れないとか言いながら、公式に記載されている手順抜けていました。すんません。)

また以下を参考にしたのですが、気になる点がいくつかありました。
Swift「No such module ‘RealmSwift’」エラーが出たときの対処法。

・気になる点①「Copy Files」にファイルを入れたか
「Copy Files」という項目がない。
これはXcodeのversionによる違いなのでしょうか…

・気になる点②「Embedded Binaries」「Linked Frameworks and Libraries」に同様のファイルが入っているか
「Embedded Binaries」という項目がない。
これも上記同様versionによる違いなのか…

更に言えば「Linked Frameworks and Libraries」もなく、
自分のXcodeのversionでは「Frameworks, Libraries, and Embedded Content」となっている

######上記とは別に試したこと
stackocerflowを主に参考にしました。

・Clean(shift+command+K)
変わらず

・Clean Build Folder.(option+shift+command+K)
変わらず

・ ~/Library/Developer/Xcode/DerivedDataの「DerivedData」中身を削除
変わらず。

・CartFileにplatform :ios, '10.0'
変わらず

・Xcode再起動
変わらず

・スキーム確認
TARGETが1つしかないので、今の以外は選択できない。

他に漏れているものや、参考にしたいXcodeの画面などおっしゃって頂ければ載せますので、
ご指摘・ご意見等おまちしております。宜しくお願い致します。

######追記(試したこと)

■ch3cooh様より
・Frameworks欄でEmbed設定が「Do Not Embed」にされていない。
追加したが変わらず
ただこれは手元のXcodeでビルドする分には「Embed & Sign」でもいいいそうな(?)

・Build PhasesでのOutput Filesが設定されていない。
追加したが、変わらず

■TsukubaDepot様より
・プロジェクトが空の状態で1度Build
プロジェクトを別で作り直し、ch3cooh様からのご指摘事項を含めて設定し、
空の状態でビルドした際は問題なくビルド成功したので、
フレームワークの追加の仕方でミスってはいなさそう…

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TsukubaDepot

2020/08/25 04:52

Carthege で発生するかわかりませんが、Cocapods 経由で入れた場合、プロジェクトが空の状態で1度Build しないと「No such module 'RealmSwift'」エラーが出ることがよくあります。試しに一度ビルドさせてみたらいかがでしょうか。
Risney

2020/08/25 05:20

回答ありがとうございます。 >プロジェクトが空の状態で1度Build 上記についてですが、「空の状態でbuild」というのは 「プロジェクトを作成して何もいじっていない状態でビルドする」 という認識で良いでしょうか?
TsukubaDepot

2020/08/25 05:22

はい、そういう意味です。 既に何か作っていても大丈夫だと思いますが、Realm 関連ファイルのコンパイル前にコケてしまうと今回のような問題は解決しないので、空のままか、あるいは問題なくコンパイルできる内容でコンパイルするのがいいかと思います(余談ですが、私は何らかのフレームワークを入れたら勝手にcmd + B するのが癖になっています)。
Risney

2020/08/25 07:08

空の状態ではbuildが成功しました。 ということは関連ファイルのコンパイル前にコケているかもしれない、 ということですね…
TsukubaDepot

2020/08/25 07:15

わたしの表現が微妙だったのでもしかしたら誤解を招いたかもしれませんが、「Realm関連のファイルを(Carthegeなどで)ダウンロードし、プロジェクトに入った状態で一度ビルドし、成功したら import 文でエラーが出なくなる」という意味だったのですが、通じていますでしょうか。 Xcode の場合、ダウンロードしただけでは変換候補などに表示させることができないことがあるため、フレームワークをダウンロードしたときにはまずビルドし、Xcode が認識できるような状態になってからコードの追加などを実施している、という意味でした。 もし、上記の意味で通じているようでしたら、Realm だけCarthegeで入れてビルドし、それから import 文を記述すると冒頭のようなエラーは出なくなるようなきがしますが、いかがでしょうか。
Risney

2020/08/25 07:28

>Realm だけCarthegeで入れてビルドし、それから import 文を記述すると冒頭のようなエラーは出なくなる おっしゃる方法ででエラーが出なくなりました! ありがとうございました!! 今回エラーが出てしまったのは、 「フレームワーク を追加したタイミングでビルドせず、先にimport文まで記述してしまったから。」 ということですね!
TsukubaDepot

2020/08/25 07:35

import などを記述し、コード本文を記述してからビルドしても問題はないのですが、精神的によくないのでわたしはまずビルドするようにしています。本来は Xcode が追加されたファイルを認識し、エラーがでなくなればいいのかもしれませんが、訳あってそのようにはなっていないのだと思います。 もし解決されたようであれば、ぜひ自己解決でこのご質問を閉じていただければと思います。
Risney

2020/08/25 10:24

そこは修正してほしいところですね、、 手順のサイトを5つくらい確認しましたし、公式ドキュメントにもそんなことはどこにも書いてなかったですし(´•ω•`) しかしおかげさまで解決致しました! ご丁寧にありがとうございました! また何かあれば宜しくお願い致します。
guest

回答2

0

ベストアンサー

当該のプロジェクトファイルを見ていないので間違っているかもしれませんが、私がいま開いているプロジェクトの設定との違いを探してみました。

その1、Frameworks欄でEmbed設定が「Do Not Embed」にされていない。

イメージ説明

その2、Build PhasesでのOutput Filesが設定されていない。

イメージ説明

本題とは趣旨が異なりますが、Realmの導入だけですとCocoaPods経由でインストールした方が簡単かもしれません。よろしくお願いいたします。

投稿2020/08/25 04:17

ch3cooh

総合スコア287

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Risney

2020/08/25 04:38

早速の回答ありがとうございます。 >その1、Frameworks欄でEmbed設定が「Do Not Embed」にされていない。 >その2、Build PhasesでのOutput Filesが設定されていない。 上記2つを試してみましたが、変わらずでした。 >Realmの導入だけですとCocoaPods経由でインストールした方が簡単かもしれません。 CocoaPods経由はできたのですが、今回Carthage指定となっているので、解決したいと思っております。 他になにかありましたら、宜しくお願い致します。
guest

0

「追記(試したこと)」にも記載しましたが、
フレームワークを追加したタイミングで1度ビルドをしないとよろしくないみたいです。
先にimport文まで記述してビルドしようとしていたので、エラーが吐かれていたかと(たぶん)

何はともあれ解決したので万々歳です!

ch3cooh様、TsukubaDepot様ありがとうございました!

投稿2020/08/25 07:33

Risney

総合スコア148

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問