问题标签 [swift-package]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
51 浏览

swift - 从 ObjC 访问函数到 Swift 包的正确语法是什么?

简单场景:我想从 Objective-C 中调用任何 Swift Package 成员函数。

我正在构建一个参考/演示/概念验证应用程序来混合 ObjC 和 Swift。

这是 Swift 方面的一个工作片段:

这是Objective-C方面:

我得到了这个编译器错误:

在此处输入图像描述

这是该项目的快照:

在此处输入图像描述

这是 Swift 包的东西:

必须有一个简单的解决方案......

0 投票
0 回答
44 浏览

swift - 尝试使用 swift 包内部的权利访问 CloudKit 数据库(测试)

我正在尝试将应用程序中的代码重构为 swift 包,并随时提供单元测试覆盖率。

当我尝试在单元测试中访问 CKDatabase 时,它​​会引发以下错误......

应用程序在权利 com.apple.developer.icloud-services 中缺少必需的值“CloudKit”。有权利:CKEntitlements<0x600002003c60>:权利= {},错误=(空)(NSInternalInconsistencyException)

如何为 swift 包提供 CloudKit 权利,或访问应用程序的权利?

0 投票
1 回答
286 浏览

swift - Swift 包 - 如何从实际的 Swift 包中排除根 git 目录中的文件?

我正在创建一个 Swift 包,它本质上是从 Objective-C 框架生成的多个 XCFrameworks 的包装器,因此可以通过 SPM 安装它们。

就创建 SP 以及将其作为依赖项添加到应用程序的能力而言,一切正常。但是我在 SP 的存储库中包含了一堆非必要的文件,我不想将它们包含在实际的 SP 中——即当 SP 作为依赖项添加时,它们不应该出现在 Xcode 的导航器中。 (这些包括源 Obj-C 框架、自述文件、变更日志、用于演示应用程序的 Xcode 工作区、用于生成 XCFrameworks 的脚本文件等)

这甚至可能吗?或者 SPM 是否会始终检查整个 repo 并使所有文件对用户可见?

我尝试使用Target说明符的各种排列:source, path, exclude但无济于事。

这是我可以通过有效清单获得的最接近的值,但是当我在虚拟 Xcode 应用程序中检查 SP 时,我仍然可以看到包含的 repo 中的所有文件:

0 投票
0 回答
34 浏览

ios - 带有 Xcode 12 / 13 的 Swift 包中不完整的文件/版权标头

在使用 Xcode 12/13 开发 swift 包时创建新文件时,有什么方法可以自动将包/目标名称和版权+公司名称添加到标题中?

只需创建一个新包(文件 > 新建 > 包)并将一个新文件添加到源(文件 > 新建 > 文件)。

目前给了我这个:

而不是这个(比如将文件添加到常规 Xcode 项目时):

谢谢!

0 投票
0 回答
170 浏览

ios - 如何在仅包含 binaryTargets (XCFrameworks) 的 Swift 包中包含/捆绑其他 Swift 包依赖项?

我正在从各种 Objective-C 框架(通过使用 XCFrameworks)创建 Swift 包。

我成功创建了 SP,但在涉及到它所依赖的其他 SP 依赖项时遇到了问题。

如果我只将WrapperPackage添加到我的DemoApp中,编译器会由于缺少SubDependencyPackage框架而失败。
如果我通过 SPM 将 SubDependencyPackage 添加到DemoApp 它编译得很好。

是否有可能/我如何...
正确地将“子依赖项” SubDependencyPackage捆绑到 Swift 包WrapperPackage中,以便在DemoApp中我只需要通过 SPM 添加WrapperPackage并且所有依赖项都已解决?

工作流程

  • DemoApp添加WrapperPackage作为 SPM 依赖项。
  • WrapperPackage包含 2 个 XCFrameworks。
  • 2 个 XCFrameworks 是从 2 个 Objective-C 框架生成的。
  • Objective-C 框架具有单独 Swift 包(SubDependencyPackage)的“子依赖项”

WrapperPackage.swift

0 投票
2 回答
119 浏览

swift - URLSession 异步在 Swift 包中不起作用

我正在尝试使用 Swift 5.5 中的 async / await 进行异步网络调用,但由于某种原因,它在我的 Swift 包中无法按预期工作。

上面的代码行在一个快速的操场上工作(这里的请求是一个 URLRequest)但它无法在我的 Swift 包中工作(使用 swift 工具版本 5.5)

起初的错误是:Type of expression is ambiguous without more context但我意识到它与元组分配有关,所以我将语句更改为:

它给了我错误:Value of type 'URLSession' has no member 'data'

此外,Xcode 的代码完成在 Swift 包中工作时不会列出 .data(for:) ,而不是在 Playground 中工作。检查下面的屏幕截图以获得更好的理解。

Swift Package Playground

0 投票
1 回答
29 浏览

c++ - C++ 检查包是否已通过 Swift 包管理器安装并包含一个文件

我有一组用 Swift 包管理器和另一个包管理器(我们称之为 PMX)解决的 C++ 包。

PMX 无法解析其中一个依赖项,但我必须在其上运行 CI。是否有可能以某种方式检查包是否正在使用 SPM 系统编译并包含适当的导入,如果它不使用 SPM,则不包含这些标头?

例子:

我想要类似的东西:

这样的事情可能吗?

0 投票
0 回答
370 浏览

ios - 更新到 MacOS Monterey 后的 Swift 包问题

我的 swift 包裹有这个问题。它是几周前使用 BigSur 创建的,作为我放置 iOS 15 的平台目标。我不明白它可能是什么

ld: warning: dylib (/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/pm/ManifestAPI/libPackageDescription.dylib) was built for newer macOS version (11.0) than being linked (10.15)

0 投票
0 回答
80 浏览

ios - 添加包依赖项后,xcode 13 Previews 停止工作

我发现了这个不错的包,它为 watchOS 提供了一个漂亮的日期和时间选择器。我将它添加到我现有的项目中,这是一个带有手表伴侣应用程序的 iOS 应用程序。一旦包被添加到项目中,Xcode 中的预览就会停止工作。

有数百个错误表明某些内容(Bindingsome View等)仅在 iOS 13.0 或更高版本上可用。我的项目的目标是 iOS 15 和 watchOS 8。该包仅添加到 WatchKit 扩展应用程序中。

该软件包在模拟器或直接在 Apple Watch 上运行时运行良好。如果项目仅包含 watchOS 目标,预览也可以完美运行。

我创建了这个示例存储库,它由一个 iOS 目标和一个 watchOS 目标以及包组成。

许多错误消息之一:

诊断显示预览实际上是在运行 watchOS 8.0 的手表模拟器上尝试的

我不知道为什么 Xcode 甚至试图在 iOS 上运行它。该包仅添加到 WatchKit 扩展中。怎么做才能使预览再次起作用?

0 投票
1 回答
53 浏览

swift - Swift 包访问修饰符

我创建了一个简单Swift Package的其中一个UI class

我设法上传到一个仓库并在一个项目中使用它。

当我第一次尝试导入它并在主项目中使用它时,访问修饰符出现问题,因为 mypackagenot public但定义为class MainView: UIView {}.

在我将包裹更改为public class MainView: UIView {}它之后,它运行良好。

我的问题:

这个包不像我的其他项目类吗?为什么应该与 一起使用public

有没有办法使用我的包类没有public access modifier