2017-03-27 14 views
2

私は自分のプレイグラウンドソースフォルダ(そのパブリッククラス)にUIVIewサブクラスを持っています。このクラスの一部を拡張としてメインプレイグラウンドファイルに入れようとしています。プレイグラウンド内のクラスエクステンション

私は

public extension SortingAlgorithmView { 

    public func typeTest() { 
     print("dfasfndjasfasfdasfdasf test ") 
    } 
} 

私の遊び場に次のように宣言してから、私のサブクラスの内側に、私は(typeTestを呼び出す)それは名前typeTest持つ機能がない私に語りました。

+0

にこの点を

import UIKit public extension SortingAlgorithmView { public func typeTest() { print("dfasfndjasfasfdasfdasf test ") } } public class SortingAlgorithmView: UIView { } 

//ページをフォルダこのコードを表示して私のプレイグラウンドで操作できるようにしたいのです – LoganHenderson

答えて

3

対話型ページは、ソースファイルと一緒に実行されません。ソースファイルが最初にコンパイルされ、次にあなたのプレイグラウンドページにインポートされます(これがすべてをpublicにする必要がある理由です)。これは毎回解釈するのではなく、一度だけコンパイルすることができるため、はるかに高速になりますが、プレイグラウンドページのコードを参照することもできません。

ソースファイルから拡張機能にアクセスするには、ソースファイルにその拡張機能を置く必要があります。ソースファイルは対話型のコンテンツにアクセスできません。

0

これは私のために正常に動作します....

EDIT: OK、これを試してみて - 再び、私のために正常に動作します...

// extFuncs.swift ---中ソースは遊び場

import UIKit 
import PlaygroundSupport 

let view = SortingAlgorithmView(frame: CGRect(x: 0, y: 0, width: 600, height: 600)) 
view.backgroundColor = UIColor.blue 

view.typeTest() 

PlaygroundPage.current.liveView = view 
+1

クラスがソースファイル内にあり、拡張がプレイグラウンドのメインページにあるときは機能しません。 – NobodyNada

+0

ソースファイルをどのようにインポートしていますか? 「実行可能」な例がありますか? – DonMag

+0

ソースファイルは、プレイグラウンドのSourcesディレクトリにあります。 – NobodyNada

関連する問題