我们的应用程序支持 iOS 12 及更高版本,但是我们在应用程序中有两个新的本地框架“Jello”和“Wizdom”,但它们仅支持 iOS 13 及更高版本(因此它们可以使用 Combine 和 SwiftUI)。
该应用程序与 Jello、Wizdom、Combine 和 SwiftUI 的链接很弱。该应用程序的主要 BaseUI 模块是实际导入 Jello 的部分。BaseUI 支持 iOS 12 及更高版本,因此它与 Jello 等的链接也很弱。
但是,我们遇到了一个问题,即 BaseUI 由于以下错误而无法编译:Compiling for iOS 12.0, but module 'Jello' has a minimum deployment target of iOS 13.0.
如何在 iOS 13 可用的情况下使导入成为条件(即,如果 iOS 13 不可用,则不要导入它)?
(到目前为止,我发现的唯一解决方法是在 Jello 周围创建一个 Objective C 包装器并通过该包装器访问它,但这很笨拙且笨拙。我也尝试用它包装整个文件,#if canImport(SwiftUI) ... #endif但这也不起作用,因为它似乎这只是一个编译时检查。)
我们的 iOS/iPadOS 应用程序遇到了极其奇怪的崩溃。
\n我们最新版本中的一些重大变化:
\n好吧,这是奇怪的部分:我们的应用程序对于直接从 iOS 14 和 15 上的 App Store 或 TestFlight 下载并安装应用程序的用户来说运行良好。
\n然而,对于 iOS 14 用户来说,该应用程序在启动时会崩溃,这些用户通过 MDM 从 App Store(公开或私人发布,无关紧要)将应用程序推送到手机,并从一个对话框中安装它,例如“AirWatch 即将发布”。从 App Store 安装 REDACTED。您的 iTunes 帐户不会因该应用程序而付费。”
\n那么,自己安装后启动应用程序与 MDM 安装后启动应用程序\xe2\x80\x94 之间有什么区别,在这两种情况下,应用程序都源自 App Store?
\n这是一个崩溃日志示例:
\n{"app_name":"REDACTED","timestamp":"REDACTED","app_version":"REDACTED","slice_uuid":"REDACTED","adam_id":REDACTED,"build_version":"REDACTED","platform":0,"bundleID":"com.REDACTED.REDACTEDapp","share_with_app_devs":0,"is_first_party":0,"bug_type":"109","os_version":"iPhone OS 14.6 (18F72)","incident_id":"REDACTED","name":"REDACTED"}\nIncident Identifier: REDACTED\nCrashReporter Key: REDACTED\nHardware Model: iPhone11,8\nProcess: REDACTED [1561]\nPath: …Run Code Online (Sandbox Code Playgroud) 在合并中,如何创建一个发送一个值但从未完成的发布者?
在下面的代码中 receiveCompletion 被调用,但我不希望它这样做:
Just(1)
.sink(
receiveCompletion: {
print("Completion: \($0)")
},
receiveValue: {
print("Value: \($0)")
}
)
Run Code Online (Sandbox Code Playgroud)
我怎样才能只发出一个值但不完整......?