[英]How to import own classes from your own project into a Playground
假設這樣的設置:
在Playground中,可以使用import
關鍵字import
UIKit
等模塊(框架)。 如何從Playground啟用對項目其他類的訪問?
只是嘗試直接訪問項目類會產生錯誤消息: 使用未解析的標識符“MyView”
從Xcode 6.0 Beta 5開始,現在可以將自己的框架導入游樂場。 這提供了一種在應用程序和游樂場之間共享代碼的方法,這可以導入您的框架。 去做這個:
您的游樂場必須與生成框架的項目位於同一工作區中。 您的工作區必須包含生成框架的目標,而不是使用預先構建的框架。
您必須已經構建了框架。 如果它是iOS框架,則必須為64位運行目標(例如iPhone 5s)構建,並且必須為Simulator構建。
您必須擁有一個活動方案,該方案至少構建一個目標(該目標的構建位置將用於操場的框架搜索路徑)。
您的“構建位置”首選項(在Xcode的高級“位置”設置中)不應設置為“舊版”。
如果您的框架不是Swift框架,則“定義模塊”構建設置必須設置為“是”。
您必須在操場上為框架添加import語句。
一旦滿足所有這些條件,導入框架將在游樂場中運行。
在Xcode 7中,我們引入了另一種機制,您可以使用它將您自己的類作為源導入,而不是導入框架; 您可以在http://help.apple.com/xcode/mac/8.0/#/devfa5bea3af上閱讀有關此“輔助來源”支持的信息。
我實際上通過這樣做設法引用當前項目中的其他Swift文件:
YourPlayground.playground
包(是的,它是一個bundle =目錄)。 vi
編輯contents.xcplayground
並添加另一個部分,如下所示: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <playground version='3.0' sdk='iphonesimulator'> <sections> <code source-file-name='section-1.swift'/> <code source-file-name='section-2.swift'/> </sections> <timeline fileName='timeline.xctimeline'/> </playground>
section-1.swift
重命名為section-2.swift
(如果你從頭開始創建Playground,你的包中應該有一個示例section-1.swift
) section-1.swift
的硬鏈接 (符號鏈接似乎不起作用),它將指向包外的Swift類文件,如: ln ../../Classes/MyView.swift section-1.swift
這樣我實際上可以在Playground外面運行代碼,但是當這樣做時,Xcode似乎更頻繁地崩潰。
編輯:
從Xcode 6 beta 5開始,你現在可以參考項目文件了,正如Rick Ballard在他的回答中指出的那樣。
從Xcode 6的Beta 5開始,如果代碼在框架中,則可以導入代碼。 你需要做的是創建一個框架目標,在那里和操場上添加Swift文件
import ModuleName
您可以在構建設置中查找模塊名稱。 它通常與目標名稱相同。
記得制作想要public
的代碼。 您需要在操場中進行更改之前構建項目。 (您還需要編輯操場以觸發重新執行。)
不要給操場文件提供與目標相同的名稱! 如果你這樣做,導入似乎工作,但當操場嘗試執行時你會得到以下錯誤:
游樂場執行失敗:錯誤:無法查找符號:
我浪費了一個小時來搞清楚這一點。 :)
我只是鏈接到Sources
文件夾中的所有swift文件:
cd /path/to/project/MyPlayground.playground/Sources
ln -s ../../*.swift .
這樣,源文件中的更改將立即在您的游樂場生效。 工作得非常好 。
Xcode 8.2,Swift 3.0.1,macOS Sierra
所有你需要做的 - 寫在開頭:
import ModuleName
(假設您的游樂場與框架/項目位於同一工作區)
重建您的項目
重新創建游樂場並從那里的舊操場復制
它解決了許多奇怪的錯誤,失敗的init和導入的任何東西!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.