首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在多包项目中统一管理资源

随着 SPM( Swift Package Manager ) 功能的不断完善,越来越多的开发者开始在他的项目中通过创建多个 Package 的方式来分离功能、管理代码。...SPM 本身提供了对包中各类资源( 包括本地化资源 )的管理能力,但主要局限于在本包中使用这些资源,难以将资源进行共享。在有多个 Target 均需调用同一资源的情况下,原有的方式很难应对。...本文将介绍一种在拥有多个 SPM 包的项目中,对资源进行统一管理的方法。访问我的博客 www.fatbobman.com[1] 可以获得更好的阅读体验以及最新的更新内容。...中进行更多地交流问题笔者最近正在使用 TCA( The Composable Architecture[3] )结合 SwiftUI 做一些开发,在 TCA 中,开发者通常会为一个 Feature 创建一个独立的包或在一个统一的包...创建 Swift 包的过程迫使您采取良好和健康的步骤来最终改进您的项目,例如测试、API 设计、依赖注入、文档编写等等。

1.5K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    如何使用 SPM 插件从 Pkl 配置文件生成 Swift 接口

    在本文中,你将学习如何安装和使用 pkl-gen-swift 命令行工具,并将其集成到你的 Swift Package Manager(SPM)项目中,方法是使用 SPM 插件。...我们声明了一个新产品,类型为插件,将用于公开 swift-pkl 命令。 我们将 Apple 的 pkl-swift 声明为包的唯一依赖项。...幸运的是,我们可以依赖于 pkl-swift 包中的可执行文件产品来将 Swift 生成器作为依赖项,但我们需要手动创建一个 pkl 命令行工具的构件束。...要创建一个封装 pkl 命令行工具的构件束,你只需要创建一个与包清单中声明的相同名称的目录,后面跟上 .artifactbundle 扩展名。...然后,通过示例展示了如何创建和修改 Pkl 配置文件,以及如何使用 pkl 命令行工具评估配置文件。接着,介绍了如何生成 Swift 接口文件,以及如何创建 SPM 命令插件来自动生成代码。

    13910

    Swift 周报 第三十期

    但是,也没有理由人为地限制开发人员在函数中创建的模型的复杂性。一些代码库(值得注意的是,Swift 编译器本身)使用带有嵌套类型的大型闭包,并且它们受益于使用协议的抽象。...用例将包括即将推出的 OrderedDictionary 和 OrderedSet。对于不可变和可变集合,它还可以提供对 Swift 使用的底层(并且可能是高度优化的)排序算法的统一访问。...(into:) 将文件内容加载到 UnsafeMutableRawBufferPointer,但这是将文件内容加载到字符串中的正确第一步吗?...[12] 提问 我想对比一下swift-foundation 和 Xcode 自带的 JSONDecoder 解码的速度。...swift-foundation 中的 JSONDecoder 看起来太慢了,我认为这是因为 swift-foundation 还没有作为一个库被引入。

    24520

    Swift 周报 第三十三期

    Swift论坛 讨论这些是错别字吗?[3] 提问: 在观看 SwifUIi 视频时,看到两处看起来像是拼写错误的东西。想知道为什么它们的表达如此含糊: 反斜杠有什么用?...它们是用于访问特定语言功能的符号,这些功能会生成与命名属性相关的内容,而不是正常访问该属性。...} } 错误信息是: 包含声明的闭包不能与结果生成器 “ViewBuilder” 一起使用 有趣的是,如果我在 world() 中添加 return (即 return "world"),编译器会在其他地方显示错误并添加警告...最后,可以使用生成的代码来在 SwiftUI 和 UIKit 中使用自定义字体。 掌握 Swift Foundation Formatter API 。...自定义格式样式[10] 摘要: 本篇博客介绍了如何使用 Swift Foundation Formatter API 中的自定义格式样式。

    34220

    Swift 2023:所有权、宏和 C++ 互操作

    Swift 另一个有前途的领域是创建一个过程宏系统,以创建高级库和 DSL。宏是一种代码生成机制,可以在词法、句法或语义层面对源代码进行转换。...使用 Swift 重新实现的日历应用的速度是 C 的 1.5 到 18 倍(在创建、日期计算等各种测试基准中调用 Swift)。...为了规避这一限制,苹果在开源 Swift 时推出了 swift-corelibs-foundation,一个 Core Foundation 的 Swift 包装器,一个位于 Foundation 核心的底层...不过,这些特性将由 Darwin 平台上的一个单独包提供,以确保与现有代码兼容。...点击底部阅读原文访问 InfoQ 官网,获取更多精彩内容! 今日好文推荐 解读数字化的2022:不再追求大而全的“军备竞赛”,用聚焦来提高转型“成功率” 如何更好地干掉微服务架构复杂性?

    1.4K10

    Swift 笔记#1 - 10 分钟掌握 Swift Package Manager

    视频讲解 视频内容 音频讲解 文字讲解 Swift Package Manager(Swift 包管理器,一般简称 SwiftPM 或者 SPM)是苹果官方提供的一个用于管理源代码分发的工具,旨在使分享代码和复用其他人的代码变得更加容易...理解 Swift PM 组织管理代码模块的规范标准 如何本地 开发/调试 所依赖的第三方包 1、官方案例 官方案例中,以 “Dealer”(发牌员) 作为案例讲解包管理的机制,其各 Modules...之间的依赖关系如下: 案例中各 Modules 关系 Dealer:是整个 demo 程序的入口文件,该 SPM 打包结果是可执行文件(executable ) DeckOfPlayingCards...3、如何创建一个 Package(具体见视频) 通过菜单添加 “Swift Package” 在 Package.swift 中声明依赖库的关系 引用依赖库,写代码就完了 4、如何本地调试依赖(具体见视频...) 拖入依赖包到 Xcode 调试依赖代码 打 tag + push git 关于「JSCON专栏﹒Swift 笔记」 “Swift 笔记”专栏,隶属于 JSCON 专栏系列,将自学 Swift 过程中个人认为的知识以简短视频方式呈现

    2K00

    苹果这个瓜真的有点大啊|Swift 周报 issue 49

    推荐博文:在 Playdate 上使用 Swift 构建小型游戏话题讨论: 你在工作中使用AI写代码吗?上期话题结果根据投票结果分析,2024年购车的选择呈现出多样化的趋势。...对于文件 I/O 等系统相关功能,开发人员可以利用 Swift System 或 Swift Foundation 库。...线程的运行循环是按需创建的,当任何线程调用某些 Core Foundation 函数时,就会创建主线程的运行循环。...尽管对运行循环的访问受到限制,但值得注意的是,后台线程可以在特定情况下运行运行循环,例如在使用某些 Core Foundation 函数时。...参与者提出了对 Swift 闭包类型的潜在增强,以促进安全的指针转义,理想情况下允许表达对象生命周期和转义指针之间的依赖关系。

    14032

    【面试必备】Swift 面试题及其答案

    说明原因 ---- 答案:对 optional 变量使用隐式拆包最常见的原因如下: 1、对象属性在初始化的时候不能 nil,否则不能被初始化。...2、解决强引用的循环问题——当两个实例对象相互引用,并且对引用的实例对象的值要求不能为 nil 时候。在这种情况下,引用的一方可以标记为 unowned,另一方使用隐式拆包。...很难说 Swift 是一个成熟的函数式语言,但是它已经具备了函数式语言的基础。 问题2- 下面的功能特性都包含在 Swift 中吗?...---- 你能通过 extension (扩展)保存一个属性吗?请解释一下原因。 答案:不能。扩展可以给当前的类型添加新的行为,但是不能改变本身的类型或者本身的接口。...高级 问题1- 能解释一下用泛型来声明枚举的问题吗 ---- 在 Swift 中,你能解释一下用泛型来声明枚举的问题吗?

    6.9K30

    苹果宣布使用Swift全面重写Foundation框架

    因为采用了原生的 Swift 实现,Foundation 框架不再需要在 C 和 Swift 之间进行转换,从而获得更高的性能。...正如苹果工程师 Tony Parker 在 Swift 论坛上所解释的那样,性能方面带来的好处是非常显著的: 使用 Swift 重新实现的日历应用的速度是 C 的 1.5 到 18 倍(在创建、日期计算等各种测试基准中调用...为了规避这一限制,苹果在开源 Swift 时推出了 swift-corelibs-foundation,一个 Core Foundation 的 Swift 包装器,一个位于 Foundation 核心的底层...在做出重写 Foundation 决定的同时,苹果正在调整 C、Objective-C 和 Swift 层之间的顺序,并让 Swift 层成为 Foundation 的基础。...不过,这些特性将由 Darwin 平台上的一个单独包提供,以确保与现有代码兼容。

    95930

    【面试必备】Swift 面试题及其答案

    答案:对optional变量使用隐式拆包最常见的原因如下: 1、对象属性在初始化的时候不能nil,否则不能被初始化。...2、解决强引用的循环问题——当两个实例对象相互引用,并且对引用的实例对象的值要求不能为nil时候。在这种情况下,引用的一方可以标记为unowned,另一方使用隐式拆包。...很难说Swift是一个成熟的函数式语言,但是它已经具备了函数式语言的基础。 问题2- Swift 1.0 or later 下面的功能特性都包含在Swift中吗?...高级 问题1- Swift 1.2 在Swift1.2版本中,你能解释一下用泛型来声明枚举的问题吗?...问题2- Swift 1.0 or later 闭包是引用类型吗? 答案:闭包是引用类型。

    2.8K20

    Swift 周报 第四十二期

    库克回答称," 我不能说,但我想说的是,我的工作是找到几个有能力接班的人,我真的希望下一任首席执行官是来自苹果内部的人。所以这是我的角色:让董事会有几个人可以选择。"...“then”关键字允许这些表达式每个分支有多个语句,从而简化了以前需要立即执行闭包或显式键入的场景。此外,它还引入了“do”表达式,使代码结构更加清晰,并处理 API 需要价值创建和后续突变的情况。...[5] 问题 理论上,SPM 是一个普通的 swift 包,您可以将其(使用工具链附带的 SPM)构建为普通的 swift 包。...但 swift-package-manager 存储库没有最新的 semver 标签,它使用“工具链”标记方案(swift-5.9.1-RELEASE)。如何依赖 SPM 作为library?...这些新方法为我们在 SwiftUI 中创建精确且有限范围的动画提供了更灵活的选择。

    22310

    苹果公司深圳实验室启用 | Swift 周报 issue 63

    Swift 论坛:提议讨论字符串编码名称推荐博文:Swift6 的发布话题讨论: 你认为今年会有牛市吗?...堆分配的数组、连续存储的命名字段,甚至单个栈分配的实例都可以通过 C 指针访问。我们的目标是使 Swift 中能够实现类似的习惯用法,同时不妥协于 Swift 的内存安全性。...然而,这些教材通常针对大学课程,而这里讨论的是“Swift 6 适合作为第一编程语言吗?”的问题。现今的孩子,可能在上大学之前(甚至 8 到 12 岁时)就接触编程了。...统一的Foundation库:跨平台一致性增强,所有平台共享现代化实现。Swift Testing:新测试库,更简洁的API和更详细的测试输出。...它常用于创建 DSL、构建 UI 组件和生成配置文件等场景。

    33543

    Swift 周报 第三十九期

    周报精选 新闻和社区:卖不动了 iPhone 在美国市场销量或陷入停滞 提案:在导入声明上使用访问级别修饰符 Swift 论坛:讨论从头开始的基本 HTTP 客户端 推荐博文:用示例解释了 Swift...提案 通过的提案 SE-0409[2] 在导入声明上使用访问级别修饰符 提案通过审查。该提案已在 三十八期周报 正在审查的提案模块做了详细介绍。 SE-0408[3] 包迭代 提案通过审查。...应用程序沙箱适用于所有网络连接,因此这是正确的举措(-: 讨论不同平台不同的宏实现[10] 我正在尝试创建一个宏,允许我在资源包中按名称引用颜色。...用示例解释了 Swift 中的值和类型参数包[12] 摘要: 本文介绍了 Swift 中的值和类型参数包,并结合示例进行了详细解释。...本文还解释了参数包的解决方案,它们帮助我们编写可重用的代码,避免编写大量的函数重载。从 Swift 5.9 开始,我们可以使用参数包重写类似的函数。

    26520

    Swift 基本语法01-Swift简介

    Swift取消了预编译指令(包括宏,比如Masonry) 没有了中括号,和其它语言比较接近 3.0 对于Foundation框架做了重大调整,去除了NS前缀 将绝大部分Class转换为struct...访问当前对象的属性,可以不用self....只有闭包的时候才去用 取消了预编译指令 自动推导:变量/常量的类型会根据=(等号)右侧代码执行结果,推导对应的类型 Swift 中对类型要求异常严格,不允许直接运算(不会做默认的隐式的转换,所有的类型确定...Button 的创建 // 创建按钮 let btn = UIButton(type: .contactAdd) view.addSubview(btn) btn.center = view.center...可选项(Optional) Optional是 Swift的一大特色,也是Swift初学者最容易困惑的问题 定义变量时,如果指定是可选的,表示该变量可以有一个指定类型的值,也可以是 nil 定义变量时

    2K70

    Swift 周报 第三十五期

    此外,似乎在 Swift 标准库中没有办法执行 "兼容" 比较 - 必须导入 Foundation 才能获取字符串重叠部分,以便访问前面提到的 NSString 方法。...最终用户应该能够自由选择合适的后端实现,而无需更改他们正在使用的库或框架。 建议的解决方案 Swift 分布式跟踪围绕着创建跨度(span),这些跨度共同形成一种树状结构。...另外,更新后的包访问级别允许将依赖标记为仅对同一包中的模块可见。这会像源文件中的常规访问级别一样进行强制执行。...将作为内部导入的声明只能从内部声明或更低的访问级别中引用,而在公共或包声明中使用则会报错。...使用 Actor 作为阻塞文件访问 API 的通道点的优缺点是什么? 回答 仅仅是在文件系统中进行典型的CRUD操作 在这里,Actor并不能帮助你。

    23430

    玩转 Xcode Playground(上)

    玩转 Xcode Playground(上) 访问我的博客 www.fatbobman.com[1] ,可以获得更好的阅读体验。...创建与设置 .playground vs .playgroundbook 在 Xcode 中创建的 Playground 项目被保存为以.playground为后缀的包(可以通过显示包内容查看其中的文件....playgroundbook是 Swift Playgrounds 特有的包格式,相较.playground,它包含了很多独有的功能,这些功能主要用于改善 Swift Playgrounds 在教育和娱乐方面的体验...在 Swift Playgrounds 中创建 Playground 项目 在 Swift Playgrounds 4 中可以直接创建与 Xcode 兼容的 Playground 项目(.playground...在 Swift Playgrounds 4 中,点击侧边栏的编辑按钮,进入编辑模式,点击+按钮可创建新的 Page。

    4.1K20

    cocoapods项目迁移至swift package manager

    记录一下把 业火输入法 的项目依赖从 cocoapods 迁移至 swift package manager 所经历的重重磨难1. cocoapods 移除首先执行命令 pod deintegrate,...万般无奈之下,我只能重新创建了一个同名的项目,然后把旧项目的 Fire.xcodeprj 用新项目的 Fire.xcodeprj 文件替换掉,因为新创建的项目使用 SPM 依赖是完全没有问题的。...猜测之所以报错是因为,SPM 的依赖还在原来的构建目录下,在新的构建目录下,没有 SPM 的依赖,所以出现了上面的问题,之所以有此猜测,是因为网上有些解决方案是通过把原来构建目录下的 SPM 包挪到新构建的目录下修复的...SQLCipher的迁移项目中使用了 SQLCipher 来存储敏感数据,但是 SQLCipher 只有 cocoapods 依赖,目前还没有 SPM 包,需要自行构建处理。...总结迁移总体而言还算比较顺利,但是 SPM 这种方式的缺点也是有的,比如说如果依赖的包后续删库跑路了,那在新设备上依赖应该就会无法安装了,所以要慎重引入依赖并做好容灾管理。

    1.1K40
    领券