将 Swift Package 添加到自定义框架

2023-12-30

创建具有 SPM 依赖项的框架相当新鲜。因此,我创建了一个新的框架项目,添加了一些类/文件以及 SPM 依赖项(CocoaLumberjack 记录器)。框架编译良好。

当我寻找我计划嵌入到其他项目中的框架产品时,我看到它位于我的产品文件夹中。除了它之外,我还看到了 CocoaLumberjack 模块。在我的框架内部,除了 exec 文件之外没有太多内容。

当我尝试将我的框架嵌入到其他一些项目中时。没有任何内容编译,因为它说缺少 CocoaLumberjack 模块。

有谁知道如何解决这一问题?我是否错过了重要的一步或其他什么?


嗯,在导入框架本身的过程中您可能会遇到很多问题。它还取决于您是否使用框架作为二进制或源代码。我假设您使用源代码方法,因为您是框架的创建者。但是,您可以在此处检查所有方法:在这个问题中 https://stackoverflow.com/questions/51151862/how-to-add-frameworks-into-the-swift-project。让我们看一下为了在 swift 项目中成功使用具有 SPM 依赖项的框架所需实施的所有步骤。

  1. 正确创建 SPM 并链接所有其他 SPM 依赖项教程在这里 https://www.swiftbysundell.com/articles/managing-dependencies-using-the-swift-package-manager/。确保所有类、结构等及其相应的初始值设定项具有正确的访问级别属性。如果您计划在包外使用它们,请使用公共初始值设定项。 2)创建 SPM 包后,将其链接到框架。为了这个答案,我创建了testFramework并链接了我的一个自定义 SPM 包,名为VodApiPackage。这个包还包含对另一个包的依赖BaseTvApiServicePackage.

我还添加了TestPrinter文件包含用于创建在我的 SPM 包中声明的错误的简单函数。此功能仅用于检查一切是否正常工作,稍后供用户使用。也宣布公开。

import Foundation
import VodApiPackage

public struct TestPrinter {
public init () {}

public func makeTest() {
    let x = VodApiError.customErr(msg: "testMsg")
    print(x.localizedDescription)
}

}

  1. 打开你的项目并链接到框架,你也可以检查这个不错的教程 https://programmingwithswift.com/create-a-swift-framework/。教程中最重要的步骤是步骤 5 和 6。拖动的位置.xcproj进入您的项目并链接库和框架

  2. 确保您的库和 SPM 依赖项在项目中正确链接。检查下面的示例项目。

  1. 使用您的框架及其包构建和测试:

    import UIKit
    import testFramework
    
    class ViewController: UIViewController {
    
    
     override func viewDidLoad() {
      super.viewDidLoad()
      testmodel()
    
     TestPrinter().makeTest()
     }
    }
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 Swift Package 添加到自定义框架 的相关文章

  • UIDatePicker,显示带有年份和时间的完整日期

    你能有一个UIDatePicker在 DatePicker 上显示日 月 年和时间 或者我需要进行自己的自定义UIPickerView i e 2000 年 11 月 12 日星期一 5 20 AM 目前日期选择器 datePickerMo
  • 用 2 行截断 UILabel 的头部

    我有一个 UIlabel 其 numberOfLines 为 2 并且 lineBreakMode 截断头 但是当我运行它时 而不是像这样在第一行截断头部 1st Line Content 2nd Line Content 它截断就像 1s
  • SwiftUI:如何使用 @Binding 变量实现自定义 init

    我正在制作金钱输入屏幕 我需要实施自定义init根据初始化量设置状态变量 我认为以下方法会起作用 struct AmountView View Binding var amount Double State var includeDecim
  • 使用 AVAssetWriter 录制视频:第一帧是黑色的

    我正在录制视频 用户也可以切换到仅音频 AVAssetWriter 我在应用程序启动时开始录制 但是第一帧是黑色的 或非常暗 当我从音频切换到视频时也会发生这种情况 感觉就像是AVAssetWriter and or AVAssetWrit
  • UIImage 在编码/解码时不等效

    我一直在对我的模型进行一些测试 以确保当我将它们编码为 JSON 然后使用它们解码回来时它们是相等的JSONEncoder Decoder 然而 我的一项测试失败了 罪魁祸首是UIImage 我已确保在编码 解码过程中没有抛出任何错误 首先
  • 在Xcode7中播放音频

    我只是想在点击按钮时播放音频 但是这行代码出现错误 ButtonAudioPlayer AVAudioPlayer contentsOfURL ButtonAudioURL error nil 这是我的整个代码 import UIKit i
  • DropDelegate Safari 拖动图像

    我正在尝试实施DropDelegate模式以允许将图像拖到我的视图中并加载它们 这对于取景器中的图像效果很好 但是当将图像从 safari 拖到我的视图中时 这不起作用 我注意到typeIdentifier or UTType所提供的信息
  • 从 Firebase Swift 检索信息的好方法

    我和我的朋友正在 swift 上开发一个 IOS 项目 并集成了 新的 Firebase 我们能够写入 Firebase 数据库 但是我们在检索数据时遇到了问题 我们有一个 tableView 控制器 我们希望从 Firebase 数据库填
  • 使用 Swift 创建随机 CGPoint

    所以 我正在尝试开发一个用 Swift 编写的简单游戏 但我在做一件非常简单的事情时遇到了困难 我无法创建随机 CGPoint 使用 arc4random 时 会出现编译器错误 告诉我无法在 CGPoint 中使用 Int32 那么 有什么
  • Swift 闭包异步执行顺序

    在我的模型中 有函数来获取需要完成处理程序作为参数的数据 func fetchMostRecent completion sortedSections TableItem gt self addressBook loadContacts c
  • 在单独的类中录制和播放语音 (Swift3)

    我使用了许多用于录制和播放声音的代码 但其中大多数不在 swift3 中 并且它们在我的应用程序中不起作用 This https github com genedelisa AVFoundationRecorder代码有效 但我想从视图控制
  • 带过滤器的 AudioKit 导出文件

    我想用音频套件的许多过滤器覆盖现有的 m4a 文件 我的代码 file try AKAudioFile forReading recordVoiceURL player AKPlayer audioFile file delay AKVar
  • 无法在 mac 屏幕保护程序发布版本上加载图像(它适用于 Xcode 调试版本)

    我从这里得到了这个 mac 屏幕保护程序示例here https github com elpsk PaskySaver 我将其更改为显示图像而不是文本字段 问题是这样的 它可以显示任何 Xcode 对象 例如 textView textF
  • 如何避免父ScrollView裁剪内部ScrollView?

    When a horizontal child ScrollView is nested inside a vertical parent ScrollView internal element is clipped by parent S
  • 为什么快速枚举中的可选项会导致无限循环?

    评估以下代码 我希望打印一次Hello World 相反 它会导致无限循环 有人可以解释为什么吗 let array what for text String in array print Hello World 删除可选的 显然让它只打印
  • XC测试元组

    我正在尝试构建一个单元测试 如下所示 region is a Double Double tuple XCTAssertEqual region 0 0 200 0 但 Xcode 给我一个错误 Cannot invoke XCTAsser
  • 获取 Swift 子目录中资源的所有 URL

    我正在尝试为 iOS 应用程序的子目录中的所有资源创建 URL 数组 我似乎无法到达正确的路径 即使我不知道名称 我也希望能够检索 URL 即我不想将文件名硬编码到代码中 Below is a screen shot of the hier
  • 即时将图像添加到 AR 资源以进行图像识别

    ARKit1 5介绍图像识别 在代码中 您必须创建一组参考图像 如下所示 let referenceImages ARReferenceImage referenceImages inGroupNamed AR Resources bund
  • 使用 NSOutlineView 作为文件系统目录浏览器的 Swift 代码

    我已经在这段 Swift 代码上苦苦挣扎了一段时间 但没有发现问题 代码 下面应该提供文件目录作为 NSOutlineView 的数据源 GUI 非常简单 只是一个带有 NSOutlineView 和 OutlineViewControll
  • 您可以严格泛型类型或为一个参数指定多个类型吗?

    例如我想指定一个类型可能是Integer or String并将其用作特殊类型func我试过typealias但它不会解决这个问题 因为类型别名不能有or参数作为其唯一用途 因此请考虑下面的情况 typealias alis StringP

随机推荐

  • vim屏幕恢复

    我在屏幕中使用 vim 进行开发 如果我退出 vim 当前的屏幕内容将保留在那里 在屏幕之外 xterm 退出vim将恢复之前的缓冲区 喜欢 server1 cmd some stuff some stuff server1 cmd ser
  • java string.Substring StringIndexOutOfBoundsException 循环内

    有人可以解释一下吗 这是代码示例 使用参数调用函数 S26V5 private String uniqueCode String inp String index 023456789ABCDEFGHJKLMNOPQRSTUVWXYZ int
  • Symfony2 路由 - 路由子域

    有没有办法设置基于主机名的路由Symfony2 我在官方文档中没有找到有关此主题的任何内容 http symfony com doc 2 0 book routing html http symfony com doc 2 0 book r
  • 如何突出显示文本区域中的部分文本

    有没有办法突出显示文本区域中的部分文本 说一下 文字是Hi twitter twitpic现在我想强调 twitter and twitpic仅且不Hi 那可能吗 这必须即时发生 PS 我不想用iFrame 提前致谢 Use setSele
  • JAX-WS servlet 过滤器异常

    我有一个通过 SOAP 进行通信的客户端 服务器应用程序 服务器端应用程序是一个 Java EE 应用程序 它使用 JAX WS 公开 Web 服务 我有一个 Servlet 过滤器设置 用于在调用服务之前执行某些检查 除了异常处理之外 这
  • 使用SAS和mkdir在windows中创建目录结构

    我想在 Windows 中从 SAS 中创建目录结构 最好使用允许我指定 UNC 命名约定的方法 例如 computername downloads x y z 我在网上看到很多使用 DOS 的 SAS 示例mkdir通过调用命令 syse
  • 漏洞? Stargazer 无法使用“省略”选项正确显示固定效应/因子标签?

    当我生成一个表时stargazer并省略固定效应 然后指定omit labels选项 stargazer 版本 5 2 2 每列显示 否 这是一个例子 library stargazer generate example data set
  • ViewPager2/Tabs 的 ViewModel 状态问题

    我遵循 MVVM 模式 这意味着每个片段都有一个 ViewModel I added two使用 ViewPager2 进行选项卡 我的适配器如下所示 Override public Fragment createFragment int
  • 如何在 iOS Simulator 9.1 上启用强制触摸压力

    带有 Xcode 7 1 的新 9 1 模拟器具有模拟 iPhone 6s 6s 等强制触摸的功能 但该选项呈灰色 禁用 iOS 模拟器 gt 硬件 gt 强制触摸压力 已禁用 截图供参考 有人知道如何启用此选项吗 注意 我在 iPhone
  • 使用 printStackTrace() 来处理异常是一个坏主意吗?

    在像这样的 Android 异常中使用 printStackTrace 是一个坏主意吗 catch Exception e e printStackTrace 我相信这就是您所需要的 catch Exception e Log e TAG
  • 如何在 Obj-C 代码中引用环境变量

    我在 Xcode 源代码树中定义了一个名为 MY SRC DIR 的路径变量 我想获取这个环境变量的值并将其放入 obj c 代码中的 NSString 中 例如 NSString getSourceDir return MY SRC DI
  • 在 React 中从数组中删除项目时出现意外行为

    我到处寻找这个问题的答案 但我只需要一些人的帮助 我有一个简单的表单 用户可以在其中添加其他字段 用户还可以删除不再相关的字段 我遇到的问题是删除字段 这些字段是从组件状态中的数组呈现的 但是当我尝试从数组中删除项目时 它始终是数组中的最后
  • 本地开发 Alexa 技能时出现 Dynamo 错误“ConfigError:配置中缺少区域”

    在本地开发和调试 Alexa 技能时使用定制工具 https bespoken tools 连接到 Dynamo 时发生错误 使用Alexa Node js SDK https github com alexa alexa skills k
  • 使用 BPL 加载 Delphi 对象运行时

    我在一个单位上课 通常 当我改变其方法的算法时 我必须重新编译它并整体交付补丁 我想使用 DLL 创建类的实例 在delphi about com搜索后 我发现可以使用BPL代替DLL 它是 Delphi 的 DLL 问题是我发现的几乎所有
  • 如何从图像中提取不同边缘强度的矩形?

    我正在尝试从支票图像中提取帐号 我的逻辑是 我试图找到包含帐号的矩形 对边界矩形进行切片 然后将切片输入 OCR 中以从中获取文本 我面临的问题是 当矩形不是很突出且颜色较浅时 我无法获得矩形轮廓 因为边缘未完全连接 如何克服这个问题 我尝
  • Angular2:HammerJS 滑动 md-tab-group

    我已经实施了HammerJS in my Angular2webapp 我也测试了example https scotch io tutorials using hammerjs touch gesture in angular 2 the
  • Plotly:如何在同一个子图上显示 2 个以上的 x 轴标题/范围?

    我正在使用 Plotly 并使用共享 y 轴和不同的 x 轴制作散点图子图 我尝试使用图形对象 fig layout data index 语法来显示多个堆叠的 x 轴及其各自的范围 我仅通过将 顶部 和 底部 分配给图形布局的侧面属性来成
  • Tomcat 应用程序 Profiler for Eclipse indigo

    我尝试在 eclipse indigo 中安装 TPTP 分析器 但是它不起作用我收到以下错误 Eclipse TPTP 不支持您的平台 综合代理 控制器将被禁用 要在受支持的主机上进行分析 请 在该主机上安装并使用独立代理控制器 我不知道
  • hadoop 在运行我的程序时显示以下消息。这是什么意思?

    我正在运行 hadoop 程序 收到以下消息 这是什么意思 我需要担心这个消息吗 INFO hdfs DFSClient Exception in createBlockOutputStream java io EOFException P
  • 将 Swift Package 添加到自定义框架

    创建具有 SPM 依赖项的框架相当新鲜 因此 我创建了一个新的框架项目 添加了一些类 文件以及 SPM 依赖项 CocoaLumberjack 记录器 框架编译良好 当我寻找我计划嵌入到其他项目中的框架产品时 我看到它位于我的产品文件夹中