46

如何将第 3 部分框架导入 Xcode Playground?

Swift Playground 显然有一个框架导入机制,因为我们可以在 OSX Playground 中导入Cocoa、和(奇怪的是,iOS 似乎缺少)SpriteKitXCPlaygroundXCPlayground

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

也可以看看:

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

4

6 回答 6

46

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

现在,如果您只是想隐藏在示例中显示的代码,编辑器中的代码折叠可能会成功。

现在可以将您自己的框架导入到 Playground 中。这提供了一种在应用程序和 Playground 之间共享代码的方法,它们都可以导入您的框架。为此,您的 Playground 必须与生成框架的项目位于同一工作区。您必须已经构建了框架。如果是 iOS 框架,则必须为 64 位运行目标(例如 iPhone 5s)构建。您必须有一个至少构建一个目标的活动方案(该目标的构建位置将用于游乐场的框架搜索路径)。您的“构建位置”首选项(在高级“位置”设置中)不应设置为“旧版”。如果您的框架不是 Swift 框架,则“定义模块”构建设置必须设置为“是”。

于 2014-06-04T21:59:50.603 回答
19

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

不要再做下面的了!


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

对于 OS X 游乐场:/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在他的回答中所说的那样去归档一个雷达。

于 2014-06-06T06:30:09.417 回答
2

我写了一个教程,涵盖了 Beta 6 中自定义框架的导入

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

于 2014-08-07T07:11:36.527 回答
1

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

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

虽然它不是英文的,所以我将在这里解释:

使用迦太基:

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

carthage update --platform iOS --use-submodules

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

3:在您的工作区中添加您的库.xcodeproj文件:File> Add files to "your_workspace_name". 然后在以下位置找到它:${SRCROOT}/Carthage/Checkouts/your_library_name/your_library_name.xcodeproj

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

5:清理(⇧+⌘+K)和构建(⌘+B)。

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

于 2016-09-23T12:07:18.417 回答
1

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

所需步骤(简而言之):

  • 创建聚合目标
  • 添加脚本阶段以将框架从 Carthage/Build/iOS/ 复制到 BUILT_PRODUCTS_DIR(我在下面的示例中使用 swift 脚本,但您也可以使用 bash、ruby python 等)
  • 运行聚合目标现在您可以在 Playground 中导入框架

此外,您可以利用应用程序中的聚合目标:

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

这是上面的示例项目设置:https ://github.com/richardnees/CarthagePlaygrounds

于 2017-04-18T15:48:33.813 回答
0

就像在 Swift 代码中使用 Objective-C 类一样,您可以将 3rd-party 库/类导入您的项目,Xcode 会询问您是否要创建<#YourProjectName>-Bridging-Header头文件。选择是并在该文件中导入您需要的所有头文件。之后,在您的 Playground 中,您可以简单地完成import <#YourProjectName>-Bridging-Header之后import UIKit,您将能够使用您导入到项目中的类。

更新:这实际上是不正确的。请在下面查看我的评论。很抱歉有任何混淆...

于 2014-06-04T21:25:00.067 回答