剛剛發現,使用新的 iOS 15 SDK(Xcode 13 RC)構建應用程式時,在使用 CloudKit 時不再向后兼容 iOS 14.x 目標。
重現的步驟:
在 Xcode 13 RC 中新建專案(檢查 Core Data CloudKit 選項)
修改生成的 Persistence.swift 檔案,并像這樣添加一個私有的 CK 存盤器:
let cloudStoreDescription
let cloudStoreDescription = NSPersistentStoreDescription(url: url.appendingPathComponent("(privateCloudStoreName) .sqlite") cloudStoreDescription.configuration = "privateCkStoreName" var privateCloudKitContainerOptions = NSPersistentCloudKitContainerOptions(containerIdentifier: "CKIDENTIFER") 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將向公眾發布,我怎樣才能減輕這種情況呢?
可復制的示例此處。 反饋助手ID。FB9630276
uj5u.com熱心網友回復:
解決方案一直都在我的眼前:
只要洗掉以下內容就可以了。
只需洗掉以下一行:
privateCloudKitContainerOptions.databaseScope = .private
移除該行將產生相同的效果,因為私有范圍是默認的,同時也將消除匯入CloudKit的需要。
通過這樣做,在 iOS 14.x 上就不會再出現崩潰了
。如果你想使用.public范圍,根據Apple Frameworks Enginner,修復方法如下:
如果你想使用.public范圍,根據Apple Frameworks Enginner,修復方法如下。
let options = NSPersistentCloudKitContainerOptions(containerIdentifier: id)
options.setValue(1, forKey: "databaseScope") // .public == 1 // options.databaseScope = CKDatabase.Scope.public
description.cloudKitContainerOptions = options
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/332499.html
標籤:
