web-dev-qa-db-ja.com

Swift=プレイグラウンドは同じプロジェクトの他のソースファイルを見ることができますか?

私のプロジェクトの別個のSwift=ファイルに最も単純なカスタムクラスを作成しました。

class Foo
{
    init()
    {
        println("I made a foo.")
    }
}

次に、同じプロジェクト内の遊び場で、私は試しました

var x = Foo()

Xcodeはこれを好まないようで、「Foo」は未解決の識別子であると教えてくれました。私のプロジェクトの他のSwift=ファイルは問題なく 'Foo'を解決できるため、プレイグラウンドがプロジェクト構造の残りの部分にどのように適合するかについて多少混乱しています。

プロジェクト内の他のSwift=ファイルで定義したカスタムクラスをプレイグラウンドで使用できるようにするにはどうすればよいですか?ビルドターゲットの製品モジュールに名前を付けて、プレイグラウンドにインポートしようとしましたが、成功:プレイグラウンドは製品モジュールの名前を認識しません。

助けてくれてありがとう。私はそれが簡単なものであることを知っています。

39
Maxwell Collard

彼らがすることはできません。遊び場は自己完結型です。これは将来的に変更されることを期待しています。

編集:Xcode 6.3の時点で、プレイグラウンドにサポートコードを含めることができるようになりました。同じプロジェクトの他のコードを見ることができませんが、プレイグラウンド内から使用できるプレイグラウンドのサポートフォルダーにコードを追加できます。詳細については the Swift blog を参照してください。

27
Lily Ballard

プレイグラウンドでプロジェクトのコードを使用するには2つの方法があります

プレイグラウンドのソースフォルダー

はい、Xcode 6.3 Beta 3で(そして、できれば将来へ):

プレイグラウンドは、Xcode内で、クリックするとリソースフォルダーとソースフォルダーを表示する開閉用三角形の付いたバンドルとして表示されるようになりました。これらのフォルダーには、プレイグラウンドのメインSwiftコードから簡単にアクセスできる追加コンテンツが含まれています。これらのフォルダーを表示するには、[表示]> [ナビゲーター]> [プロジェクトナビゲーターを表示].

新しいプレイグラウンドを開き、cmd + 1を押して左ペインを表示し、ファイルをsourceフォルダーにドラッグしてプレイグラウンド内で使用します。

注意:

ソースフォルダー内のファイルはフレームワークにコンパイルされます。つまり、プレイグラウンドでクラス、関数などにアクセスできるようにするには、publicとして明示的にマークする必要があります。

public class VisibleClass {
}

class InvisibleClass {
}

ソース: ブログをリリース

フレームワークにプロジェクトをコンパイル

  1. プロジェクトがまだない場合は、プロジェクトをワークスペースに移動します。 (ファイル->ワークスペースとして保存)はトリックを行います
  2. フレームワークターゲットをプロジェクトに追加する
  3. ビルドフレームワーク
  4. アクセスするファイルがフレームワークターゲットに追加されていることを確認してください
  5. プレイグラウンドをworkspaceに追加(プロジェクトではありません)
  6. 使用する @testable import YourFrameworkName
  7. 遊び場のアクセスコード

check out にしたい場合は、もう少し詳しく説明します。

29
Logan

はい。 Sourcesディレクトリにクラスファイルを追加することから始めました。すべてを公開しました:

  • クラス
  • 初期化
  • メンバー

何度も試してみたが、何も機能しなかった。 XCodeがクラッシュし、再び開いた後、すべてが魅力的に機能しました。

Using Sources/Dna.Swift in Playground

5
Uki D. Lucas

Xcode 10のProject Navigatorで:

  1. ソースコードファイルをプレイグラウンドのSourcesフォルダーに追加します。
  2. プレイグラウンドのSourcesフォルダーからプロジェクト内の目的の場所にファイルをドラッグします(小さな「円で囲んだ」アイコンが表示されるはずです。
  3. ドラッグを終了し、[ファイルの追加]ダイアログで[必要に応じてコピー]をオフにします

これで、ソースファイルはplaygroundパッケージで「存続」します。プロジェクトはそれを参照します(ファイルインスペクターで確認できます)。

私はそれを他の方法で試しました:ファイルは、playgroundのSourcesフォルダーを参照するプロジェクトフォルダーにありますが、機能しませんでした。最終的に、ソースコードファイルのコピーが2つになりました。

0
Verticon