簡體   English   中英

如何將自己的類從您自己的項目導入Playground

[英]How to import own classes from your own project into a Playground

假設這樣的設置:

  • 你有一個Xcode 6項目,你用Objective-C和Swift實現了自己的類(比如MyView和MyViewController)
  • 您已將Playground添加到項目中

在Playground中,可以使用import關鍵字import UIKit等模塊(框架)。 如何從Playground啟用對項目其他類的訪問?

只是嘗試直接訪問項目類會產生錯誤消息: 使用未解析的標識符“MyView”

從Xcode 6.0 Beta 5開始,現在可以將自己的框架導入游樂場。 這提供了一種在應用程序和游樂場之間共享代碼的方法,這可以導入您的框架。 去做這個:

  1. 您的游樂場必須與生成框架的項目位於同一工作區中。 您的工作區必須包含生成框架的目標,而不是使用預先構建的框架。

  2. 您必須已經構建了框架。 如果它是iOS框架,則必須為64位運行目標(例如iPhone 5s)構建,並且必須為Simulator構建。

  3. 您必須擁有一個活動方案,該方案至少構建一個目標(該目標的構建位置將用於操場的框架搜索路徑)。

  4. 您的“構建位置”首選項(在Xcode的高級“位置”設置中)不應設置為“舊版”。

  5. 如果您的框架不是Swift框架,則“定義模塊”構建設置必須設置為“是”。

  6. 您必須在操場上為框架添加import語句。

一旦滿足所有這些條件,導入框架將在游樂場中運行。

在Xcode 7中,我們引入了另一種機制,您可以使用它將您自己的類作為源導入,而不是導入框架; 您可以在http://help.apple.com/xcode/mac/8.0/#/devfa5bea3af上閱讀有關此“輔助來源”支持的信息。

我實際上通過這樣做設法引用當前項目中的其他Swift文件:

  • 創建一個空的Playground,並在您的項目下的某個位置放置。
  • 在終端中打開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 
  • 關閉Xcode並再次打開Playground。
  • 現在應該有兩個部分,一個部分包含Swift類文件的內容,另一個部分包含從頭開始創建Playground的示例內容。

這樣我實際上可以在Playground外面運行代碼,但是當這樣做時,Xcode似乎更頻繁地崩潰。

編輯:

從Xcode 6 beta 5開始,你現在可以參考項目文件了,正如Rick Ballard在他的回答中指出的那樣。

從Xcode 6的Beta 5開始,如果代碼在框架中,則可以導入代碼。 你需要做的是創建一個框架目標,在那里和操場上添加Swift文件

import ModuleName

您可以在構建設置中查找模塊名稱。 它通常與目標名稱相同。

記得制作想要public的代碼。 您需要在操場中進行更改之前構建項目。 (您還需要編輯操場以觸發重新執行。)

重要

不要給操場文件提供與目標相同的名稱! 如果你這樣做,導入似乎工作,但當操場嘗試執行時你會得到以下錯誤:

游樂場執行失敗:錯誤:無法查找符號:

我浪費了一個小時來搞清楚這一點。 :)

我無法使用這里的任何答案讓它工作,所以我開始玩,並找到了一種簡單的方法,可以讓我將一個快速的課程導入游樂場。

只需在項目中創建一個游樂場,其中的一個名為“sources”的目錄,只需將swift類的副本拖到該文件夾​​中,然后操場就可以訪問它。

例如:

在此輸入圖像描述

我只是鏈接到Sources文件夾中的所有swift文件:

cd /path/to/project/MyPlayground.playground/Sources
ln -s ../../*.swift .

這樣,源文件中的更改將立即在您的游樂場生效。 工作得非常好

Xcode 8.2,Swift 3.0.1,macOS Sierra

所有你需要做的 - 寫在開頭:

import ModuleName

(假設您的游樂場與框架/項目位於同一工作區)

如果它不起作用:

  1. 重建您的項目

  2. 重新創建游樂場並從那里的舊操場復制

它解決了許多奇怪的錯誤,失敗的init和導入的任何東西!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM