如何将第三方框架导入Xcode Playground?

时间:2014-06-04 19:42:11

标签: ios xcode macos swift xcode6

如何将第三方框架导入Xcode Playground?

Swift Playground显然有一个框架导入机制,因为我们可以导入CocoaSpriteKit,并且在OSX Playground中,XCPlaygroundXCPlayground似乎从iOS中丢失,奇怪的是)

我真正想做的是隐藏我操场上的代码,并能够展示一个最小的例子。关于如何将框架加载到Swift游乐场的任何想法?

另见:

(这个问题不同,因为请求是在Playground中使用框架而不是简单的常规swift文件)

6 个答案:

答案 0 :(得分:46)

目前还没有支持的方法将您自己的框架或应用程序代码导入游乐场,而不是将其粘贴到游乐场编辑器中。我们知道这是非常理想的功能,但我们一如既往地鼓励人们通过bugreporter"投票。在bugreport.apple.com

现在,如果您只是试图隐藏代码以便在示例中显示,编辑器中的代码折叠可能会起作用。

现在可以将自己的框架导入游乐场。这提供了一种在应用程序和游乐场之间共享代码的方法,这可以导入您的框架。为此,您的游乐场必须与生成框架的项目位于同一工作区中。您必须已经构建了框架。如果它是iOS框架,则必须为64位运行目标(例如iPhone 5s)构建。您必须具有构建至少一个目标的活动方案(该目标的构建位置将用于操场的框架搜索路径中)。您的#34;建立位置"首选项(在高级"地点和#34;设置中)不应设置为" Legacy"。如果您的框架不是Swift框架,那么"定义模块"构建设置必须设置为"是"。一旦满足所有这些条件,导入框架将在游乐场中运行。

答案 1 :(得分:19)

编辑:从Beta5开始,当操场是将框架构建为目标的工作空间的一部分时,现在支持此功能。 Apple开发论坛网站上有更多详细信息,但希望@Rick Ballard会将这些内容添加到他的答案中,这应该是这个问题的最终答案。

不要再做下面的事了!


从短期来看,虽然没有受支持的解决方案,但如果您正在制作模块/框架,则可以将其复制到SDK System/Library/Frameworks目录中,然后只复制import <#Module#>与导入系统框架的方式相同。

对于OS X Playground:/Applications/Xcode6-Beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks

对于iOS:/Applications/Xcode6-Beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.0.sdk/System/Library/Frameworks/

但在你这样做之前......就像@Rick在答案中所说的那样,提出一个雷达。

答案 2 :(得分:2)

我写了tutorial,涵盖了Beta 6中自定义框架的导入

简而言之,如果您在同一个项目或工作区中拥有游乐场和框架,并且您的框架是为64位构建的(即使是iOS),它们也可以很好地协同工作。

答案 3 :(得分:1)

来源:http://qiita.com/ryokosuge/items/2551cd4faa9dca324342

如果有人在阅读接受的答案后仍然难以理解如何解决问题,这可能有所帮助。

虽然不是英文,所以我会在这里解释一下:

使用迦太基:

1:在项目的根目录中设置Cartfile,添加库并运行:

carthage update --platform iOS --use-submodules

2:确保您的项目保存为Workspace。从Xcode菜单栏:File&gt; Save As Workspace。关闭Xcode并从新的.xcworkspace文件重新打开。

3:在工作区中添加图书馆的.xcodeproj文件:File&gt; Add files to "your_workspace_name"。然后在${SRCROOT}/Carthage/Checkouts/your_library_name/your_library_name.xcodeproj

中找到它

4:在项目的常规设置中找到Embedded BinariesLinked Frameworks and Libraries部分。将您的库的.framework文件添加到两者。

5:清洁(⇧+⌘+ K)并构建(⌘+ B)。

6:在操场上导入你的图书馆。

答案 4 :(得分:1)

我通过将构建的框架复制到Built Products Directory来解决它,其中工作区中的Playgrounds也搜索框架。注意:您还需要运行lipo并从FAT二进制文件中删除未使用的体系结构。

所需的步骤(简而言之):

  • 创建汇总目标
  • 添加脚本阶段以复制框架 从Carthage / Build / iOS /到BUILT_PRODUCTS_DIR(我使用swift脚本 在下面的例子中,你也可以使用bash,ruby python 等)
  • 运行聚合目标现在您可以在一个中导入框架 游乐场

此外,您可以利用应用中的汇总目标:

  • 从BUILT_PRODUCTS_DIR嵌入框架,而不是Carthage / Build / iOS /
  • 将聚合目标添加到应用方案,以便在清理后重新建立框架。

以上是一个示例项目设置:https://github.com/richardnees/CarthagePlaygrounds

答案 5 :(得分:0)

与在Swift代码中使用Objective-C类一样,您可以将第三方库/类导入到项目中,Xcode会询问您是否要创建<#YourProjectName>-Bridging-Header头文件。选择yes并导入该文件中所需的所有头文件。之后,在您的游乐场,您可以在import <#YourProjectName>-Bridging-Header后执行import UIKit,然后您就可以使用导入项目的类。

更新:这实际上是不正确的。请参阅下面的评论。对不起任何困惑......