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

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

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

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

Xcode

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

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

Q&A

解決済

1回答

4336閲覧

RealmSwiftがPlaygroundでImportできない。

Gazelle

総合スコア136

Realm

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

Xcode

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

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

1グッド

1クリップ

投稿2016/07/02 05:23

編集2016/07/05 02:40

###経緯

今回はiOSプロジェクトを作成し、そのプロジェクト内でPlaygroundを使用してRealmSwiftの挙動を逐次確認してみよう、という目的で遭遇したエラーになります。

###前提・実現したいこと

####達成したいこと

PlayGround上でRealmを使用したい。

####各バージョン

2016年7月2日 14:00 現在

  • Xcode: Version 7.3.1 (7D1014)
  • pod: 1.0.1 (pod --versionで確認)

Podfileは次のようにしています。

Podfile

1# Uncomment this line to define a global platform for your project 2# platform :ios, '9.0' 3 4target 'RealmSampleForiOS' do 5 # Comment this line if you're not using Swift and don't want to use dynamic frameworks 6 use_frameworks! 7 pod 'RealmSwift' 8 # Pods for RealmSampleForiOS 9 10 target 'RealmSampleForiOSTests' do 11 inherit! :search_paths 12 # Pods for testing 13 end 14 15end

pod installを実行すると次のように出力されます。

Analyzing dependencies Downloading dependencies Installing Realm (1.0.1) Installing RealmSwift (1.0.1) Generating Pods project Integrating client project Sending stats Pod installation complete! There is 1 dependency from the Podfile and 2 total pods installed.

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

####手順

  1. pod initを実行後、上記のPodfileを作成。
  2. pod installを実行
  3. .xcworkspaceを開く。
  4. Xcode上でm「File > New File > iOS Source > Playground」を選択して、Playgroundを作成
  5. 作成したPlaygroundファイルにimport RealmSwiftを記述。
  6. 一旦「cmd + B」でビルド

上記の手順の結果、次のようなスクリーンショットのようなエラーが生じます。

HelloRealmSwift.playgroundの図

ログを抜粋すると、エラーメッセージは次の通りです。

Playground execution failed: HelloRealmSwift.playground:1:8: error: no such module 'RealmSwift' import RealmSwift

####補足

念のため、ViewController.swiftimport RealmSwiftを記述したところ、エラーは生じませんでした。次の画像はその時のスクリーンショットです。

ViewController.swiftファイルではimportがうまくいく

###検索したこと

他にも検索してますが、関係ありそうなところだけ・・・。

何卒、よろしくお願いします。

2016/7/5 11:38 追記

該当のコードを用意しました。

コミットのコメントに作業内容を書いています。また、Podsは再現性の担保のために.gitignoreに記述しておりません。

todayske👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

CocoaPodsでインストールしたRealmSwiftをPlaygroundで利用するにはRealmも合わせてインポートする必要があります。

そしてスキーマのところでアプリを選択していることを確認してください。
Xcodeのバグにより画面にエラー表示は残りますが、正常に動作します。

またPlaygroundで動作を確認する際は、in-memoryなRealmを使うことをオススメします。そうでないと、クラスをちょっと変えるだけで自動的にRealmが再生成されてマイグレーションエラーが起こります。

swift

1import UIKit 2 3import Realm 4import RealmSwift 5 6var str = "Hello, playground" 7 8let realm = try! Realm() 9realm.configuration.fileURL

イメージ説明

投稿2016/07/04 07:14

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Gazelle

2016/07/04 14:51 編集

k_katsumiさん、お返事ありがとうございます。ご指摘の2点、(1)"import Realm"の追加と、(2) スキーマの確認を行いましたが、「error: no such module 'Realm'」が増えるだけの結果に終わりました。念のため、新規プロジェクトで試し、podsの再インストールを行いましたが結果は変わりませんでした。個人的には、どこかで些細な事を見逃しているパターンだな、と思いつつも沼にハマった状態なので、小さなことでもご指摘いただけますと幸いです。追加情報が必要な場合は遠慮なくおっしゃってくださいませ。
退会済みユーザー

退会済みユーザー

2016/07/05 02:03

そうですね。何か些細なことだと思うのですが、リモートだと難しいですね。Frameworkが両方ビルドされてるかどうか、というのも気になってるのですが、それは通常のプロジェクトだとエラーにならないというところで保証されてるのかと思います。 どこかにエラーの出るPlaygroundをワークスペースごとアップロードしてもらえませんか?直接見るのが早いと思います。
Gazelle

2016/07/05 02:42

k_katsumiさん、質問の最下部にサンプルコードをご用意しました。お暇な時でよろしいので、ご確認下さい。
退会済みユーザー

退会済みユーザー

2016/07/05 03:12

あげて頂いたサンプルで動作しました。これが正解の手順かどうかわからないのですが、以下を試してみてください。 スキーマをRealmに変更して、Playgroundを実行(コードを書き換えるか三角のボタンを押す)。`import RealmSwift`の行がエラーになり、コンソールには`Playground execution failed: error: Couldn't lookup symbols:`と表示されます。 次に、スキーマをRealmSwiftに変更して再度実行します(コードを書き換えるか三角のボタンを押す)。 同様に失敗しますが、エラーの行が`import Realm`の行に変わると思います。 ^ ここまでで上記のようにならなければ何か別の原因がありそうです。 この手順の後、最後にスキーマをアプリに変更して再度実行するとPlaygroundで正常に実行されると思います。(`import Realm`の行に赤いエラーは表示されたままですが)
Gazelle

2016/07/05 03:28

おー、できました。ありがとうございます! ちょっとここで、一つ比較したいリポジトリを所持しておりまして、こちら( https://github.com/Himenon/RealmSampleForiOS )の方ですと、スキーマの変更が必要なかったです。(こちらのプロジェクトはRealmSwiftもcocoa podsもバージョンが1個前です)。 とすると、今回この解決方法は、現行のバージョンになってからでしょうか?それとも、本来はこのようにしてPlaygroundにImportすべきだったのでしょうか?最後に、後学のためにご教示下さい。よろしくお願いします。
退会済みユーザー

退会済みユーザー

2016/07/05 04:19

わからないですね。少なくともRealmのバージョンは関係ないと思います。1.0.0から1.0.1で関係ありそうな変更はないので。 CocoaPodsは0.39から1.0.0で大きく変わったのでそれは関係あるかもしれません。
Gazelle

2016/07/05 04:36

ありがとうございます。自分でも、少し調べてみます。情報が出てき次第、書き足そうと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問