如何在swift playground中使用用carthage导入的框架

Ale*_*sev 14 xcode swift swift-playground carthage

我有一个快速的项目,通过carthage添加了一些框架.是否可以在项目内的游乐场中使用这些框架以及如何使用它,因为

import Argo
Run Code Online (Sandbox Code Playgroud)

不起作用:(

Jan*_*ano 17

这在某个时候停止了工作.叹

我现在做的是

  • 创建一个macOS>命令行工具.
  • 使用github "ReactiveX/RxSwift"并运行创建Cartfilecarthage update --platform iOS
  • 转到命令行工具目标,并在Linked框架和库中添加Carthage/Build/iOS中的框架
  • 添加playground文件.

此时我可以运行操场文件.

♂️


如果操场是构建配置为访问这些框架的目标的工作空间的一部分,则操场可以访问外部框架.

如果要将游乐场添加到现有的carthage项目中,只需将项目保存为工作区(文件>另存为工作区...),构建目标,即可完成.

如果您只想分发带有第三方框架的游乐场,则需要创建一个虚拟工作区.以下是带有RxSwift框架的游乐场的分步示例:

  1. 创建一个跨平台>其他>空类型的新Xcode项目.将其命名为RxPlayground.
    这将创建这个结构RxPlayground/RxPlayground.xcodeproj并打开一个空白的Xcode.

  2. 用迦太基下载RxSwift

    • 使用以下行创建Cartfile: github "ReactiveX/RxSwift" "swift4.0"
    • 用迦太基跑carthage update --platform iOS.
  3. 在项目中添加一个游乐场.

    • 单击文件>新建> Playground ...
    • 选择iOS>空白模板并将其命名为Rx.playground
    • 右键单击项目节点,然后选择"将文件添加到RxPlayground".
    • 选择Rx.playground并添加它.
  4. 创建工作区

    • 单击文件>另存为工作区...
    • 另存为Rx.xcworkspace
  5. 将框架复制到products目录.

    • 关闭项目并打开Rx.xcworkspace
    • 创建跨平台>其他>聚合.将其命名为RxAggregate
    • 使用以下内容创建新的运行脚本阶段:
    cp -rv "${SRCROOT}/Carthage/Build/iOS/" "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}"

此时,Xcode和Finder看起来像这样:

Xcode中

请注意,当您运行Carthage时会出现Carthage /和Cartfile.resolved,如果没有它们,您的游乐场将只有几Ks.

发现者

最后,构建项目(⌘B).现在您可以在游乐场中使用框架:

//: Playground - noun: a place where people can play
import RxSwift

_ = Observable<Void>.empty()
    .subscribe(onCompleted: {
        print("Completed")
    })
Run Code Online (Sandbox Code Playgroud)

有时第一次构建(⌘B)时Xcode没有注意到新框架(叹气).我所做的是点击目标并返回源文件,或重新打开项目.我没有解释为什么会这样.


Nie*_*els 5

为了使框架在游乐场内工作,生成框架的项目必须包含在项目的工作区中.因此,为了完成这项工作,您需要按照以下步骤操作:

  1. 如果项目不在工作区内,请File > Save As Workspace在Xcode中选择为项目创建工作区.
  2. 将.xcodeproj文件从Carthage/Checkouts文件夹拖到工作区中.
  3. 在框架目标上运行构建操作.