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

时间:2015-04-26 20:16:01

标签: swift xcode swift-playground carthage

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

import Argo

不起作用:(

5 个答案:

答案 0 :(得分:17)

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

我现在所做的是

  • 创建一个macOS>命令行工具。
  • 使用github "ReactiveX/RxSwift"创建一个Cartfile并运行carthage update --platform iOS
  • 转到命令行工具目标并在Linked frameworks和Libraries中添加Carthage / Build / iOS中的框架
  • 添加游乐场文件。

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

♂️

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

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

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

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

  2. 使用迦太基下载RxSwift

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

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

    • 点击文件>保存为工作区......
    • 另存为Rx.xcworkspace
  5. 将框架复制到产品目录。

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

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

    xcode

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

    Finder

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

    //: Playground - noun: a place where people can play
    import RxSwift
    
    _ = Observable<Void>.empty()
        .subscribe(onCompleted: {
            print("Completed")
        })
    

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

答案 1 :(得分:6)

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

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

答案 2 :(得分:3)

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

在此处查看更多信息: https://github.com/richardnees/CarthagePlaygrounds

答案 3 :(得分:3)

基于@Jano的出色回答(感谢),我创建了一个功能齐全的游乐场以与Carthage框架进行交互:

https://github.com/backslash-f/carthage-playground

我以图表框架为例:

Charts example

我用最新的Xcode测试过。

在我的计算机上工作。

答案 4 :(得分:0)

找到了如何执行此操作而不转换到工作空间并将Carxage / Checkouts文件夹中的.xcodeproj文件添加到项目中的方法。 如果您有一些框架目标,该目标包含要在操场上使用的所有源,则此方法有效。该框架必须位于主要目标的“嵌入式框架”中。

  1. 从Carthage / Build / IOS将Carthage .framework添加到您的项目中
  2. 将其从项目树中拖放到“嵌入式” 框架”作为您的主要目标
  3. 将迦太基.framework添加到您的 框架目标为可选(目标成员身份)
  4. 添加导入 将“您的框架目标” 放到操场上

对我有用