【发布时间】:2021-11-11 08:25:13
【问题描述】:
刚刚发现使用 CloudKit 时,使用新的 iOS 15 SDK (Xcode 13 RC) 构建应用不再向后兼容 iOS 14.x 目标。
重现步骤:
-
Xcode 13 RC 中的新项目(检查 Core Data + CloudKit 选项)
-
将 iOS 部署目标设置为 14.0
-
修改生成的 Persistence.swift 文件并添加一个私有 CK 存储,如下所示:
让 cloudStoreDescription = NSPersistentStoreDescription(url: url.appendingPathComponent("(privateCloudStoreName).sqlite")) cloudStoreDescription.configuration = "privateCkStoreName" var privateCloudKitContainerOptions = NSPersistentCloudKitContainerOptions(containerIdentifier: "CKIDENTIFIFER") privateCloudKitContainerOptions.databaseScope = .private cloudStoreDescription.cloudKitContainerOptions = privateCloudKitContainerOptions
-
在装有 iOS 15 的 iPhone 上运行 -> 可以工作
-
下载更多模拟器运行时并添加 iOS 14.5
-
在装有 iOS 14.5 的 iPhone 上运行 -> 将失败并显示:
dyld:库未加载:/System/Library/Frameworks/_CoreData_CloudKit.framework/_CoreData_CloudKit 引用自:/Users/andrei/Library/Developer/CoreSimulator/Devices/8554B734-4894-4DD0-A8FA-6C20983F3A49/data/Containers/Bundle/Application/1317D63A-F14B-4EA2-8F18-8EA623D358AB/testapp.app/testapp 原因:找不到图片
由于下周 iOS 15 将向公众发布,我该如何缓解这种情况?
可重复的示例here。 反馈小助手id:FB9630276
【问题讨论】:
-
好的,此时我可以使用 XCODE 13 构建并在 iOS 15 sim 上运行,也可以使用 XCODE 12 构建并在 iOS 14 sim 上运行。如何以这种方式将新版本分发给苹果?
-
是的,但是根据这个线程:developer.apple.com/forums/thread/682925?page=1#687848022,Apple“今年对 Core Data 进行了许多更改,以将 CloudKit 类与非 cloudkit 客户端隔离开来,其中一个引入了这个新模块。”针对 iOS sdk 14 构建是否有效?它会直接从设备中选择新模块吗:
-
是的,我已经提出了 FB9630276。对于 Stack Overflow,我的问题是,一旦 iOS 15 向公众发布后,如何缓解此问题以避免崩溃。
-
不,我用 iOS 14 模拟器测试了 XCode 12 -> 工作,我没有构建 Xcode 12 并将构建放在 iOS 15 模拟器上。我以前没有这样做过,也许它可以从命令行实现
标签: ios xcode core-data cloudkit ios15