web-dev-qa-db-ja.com

プレイグラウンドインポート:そのようなモジュール「Foo」はありません

Appleの指示に従い、カスタムモジュールを遊び場にインポートする手順を here を含めて)従いました。

プレイグラウンドの実行に失敗しました:/var/folders/z3/kd0nj4ln1rgcpm8bdz7067wh0000gs/T/./lldb/1874/playground1.Swift:7:8:エラー:no such module 'Foo' import Foo

動作中のプレイグラウンドのインポートに回復するにはどうすればよいですか? [編集:注意してください、2つの答えは遊び場をフレームワークに関連付けるための詳細な指示を生成しました。私はそれらの指示に従いましたが、運はありません。 このソリューションでは、Xcodeで何かを再構成する必要があります。私のインストールは明らかに壊れています]

エラーと試行の詳細な画像: enter image description here

@EricDの回答に基づいた別の試みがあります。これは、ディレクトリ構造を示し、サイコロはありません。 enter image description here

33
GoZoner

解決策、from Appleサポート、Xcodeの設定を調整することでした。場所::高度な設定は「レガシー」でした。「ユニーク」に変更することにより、挿入しようとしたパスを元に戻すと、Playgroundsはnowフレームワークをインポートできます。

2
GoZoner

上記の解決策のいずれも機能しない(およびXcodeビルドパス設定が既にUniqueに設定されている)それらのいくつかについては、解決策を見つけました。

フレームワークは、Playgroundsがサポートしていないため、Generic iOS Deviceではなく、iOSシミュレータデバイス用のスキーム(リスト内のいずれか)で構築する必要があります。これは私のために働いた:

Working scheme

46
Cedric

OS XでXcode 7.1を使用する手順は次のとおりです。

  • 新規プロジェクトの作成:OS X Cocoa Framework、Swift。この例では、「TestPlaygroundFMK」という名前を付けました。

  • 新しいSwiftファイルを作成します。

  • クラスをファイルに追加します。 コードは公開する必要があります。この例ではこれを作成しました。

import Foundation

public class Talk {
    public class func sayHello() {
        print("Hello from framework!")
    }
}
  • 今すぐプロジェクトをビルドします。

  • メニューバーで、[ファイル]> [ワークスペースとして保存]をクリックします。

  • 新しいPlaygroundを作成し、Swift=ファイルの隣のプロジェクトフォルダー内に保存します。

enter image description here

プレイグラウンドは、プロジェクトと同じ名前である必要がありますnot

  • プロジェクトを再度ビルドします。

  • フレームワークをPlaygroundにインポートして使用します。

import TestPlaygroundFMK

Talk.sayHello()

enter image description here

14
ayaio
  1. 以下のようにワークスペースを作成します。

    • [ファイル]> [新規]> [ワークスペース]を選択します
    • ワークスペース名を入力し、ファイルシステムでの場所を指定します
    • 保存をクリックします
  2. 次に、Swiftクラスを含むファイルを使用してCocoaフレームワークを作成します

    • [ファイル]> [新規]> [プロジェクト]を選択します
    • Cocoaフレームワークを選択>次へ
    • 製品名と言語を入力>次へ
    • [作成]をクリックする前に、[追加先]および[グループ]リストで、示されているように[ワークスペース名]を選択します Add to workspace
    • ワークスペースにフレームワークが追加されます
  3. Swiftフレームワーク内のファイルを作成]
    • Xcodeで、Swift fileを追加し、新しいファイルを選択するフォルダを右クリックします...
    • Swift> Next>ファイルに名前を付ける> Create
  4. Xcodeでフレームワークを選択->フレームワークをビルド
  5. 遊び場の作成->遊び場もワークスペースの一部である必要があります。それをワークスペースにドラッグしない場合、自動的に追加されます。
    • Xcodeのファイルセクションで右クリックし、[新規ファイル...]> [プレイグラウンド]
    • インポート
    • メソッドを呼び出す

注:フレームワークではなくクラスをプレイグラウンドに追加したい場合は、リンクを確認してください Xcode 7プレイグラウンドに自分のクラスをインポートする方法?

5
Anni S

プレイグラウンドは正常に機能していましたが、Xcodeを終了して再度開くと、次のようなエラーが発生することがわかりました。

エラー:/var/folders/ft/bmk8wh6s5ms4my2pxhn3qbp40000gn/T/playground1-9216e0..Swift:3:8:エラー:no such module 'Playground_Sources' import Playground_Sources

...ここで、「Playground」は私のプレイグラウンドファイルの名前です。

これに対する解決策(Xcode 9.0)は、次のとおりです。

  • ワークスペース内のプレイグラウンドファイルをクリックします
  • ユーティリティパネルを表示する(opt-cmd-0
  • [プレイグラウンド設定]で[プラットフォーム]を他のものに変更してから、元に戻します。

私の場合、macOSに設定されています。それをiOSに変更してからmacOSに戻し(再コンパイルは不要)、うまく動作し始めました...それはXcodeを閉じて再び開くまでです。

macOS playgroundsで動作することがわかった唯一のソリューションです。このバグはまだXcode 9.3に存在します。

4

Xcodeはいくぶんブラックボックスだと言っても過言ではないと思います。私はこれが他の誰にも効果があると主張していませんが、私にとっては、新しい遊び場と新しいフレームワークターゲット、および他のすべての提案されたソリューションを作成した後、同じ問題を抱えた後、最終的に働いたのはワークスペースファイルと(私の場合)ココアポッドでそれを再生します。

なぜこれが機能したのか分かりません。

0
Chris Conover

enter image description hereリリースでフレームワークを構築し、これは私のために働いた。 (Xcode 10.1、Swift 4.2)

0
zuizhe