无法将容器的架构部署到生产 - CloudKit、CoreData

fin*_*bel 2 core-data ios swift cloudkit

正如标题所示,我正在发布一个应用程序,该应用程序使用 Core Data 和 CloudKit 在多个设备之间同步用户数据。为了通过 TestFlight 以及稍后通过 App-Store 分发应用程序,我必须将 CloudKit 容器部署到生产模式。不幸的是,目前这对我来说似乎不可能。
因此,通过遵循本指南https://developer.apple.com/documentation/cloudkit/managing_icloud_containers_with_the_cloudkit_database_app/deploying_an_icloud_container_s_schema,我选择了左侧的“部署架构更改”按钮并确认了部署。

在此输入图像描述

在此输入图像描述
之后,我什至收到一条成功消息,但在实际容器选择下方的顶部,它仍然显示“此容器尚未部署到生产环境”。
成功留言

在此输入图像描述

那么我错过了什么?

Vik*_*lov 6

在部署模式之前,您需要对其进行初始化。根据您的屏幕截图,您似乎没有这样做,因为应用了零更改(屏幕截图 2)。您还可以在架构部分看到您有哪些记录类型 - 我的猜测是它是空的。

您可以使用以下代码初始化方案:

    let options = NSPersistentCloudKitContainerSchemaInitializationOptions()
    try? container.initializeCloudKitSchema(options: options)
            
Run Code Online (Sandbox Code Playgroud)

您需要将 AppDelegate 放入 pesisticContainer 中,因此它看起来像这样:

lazy var persistentContainer: NSPersistentCloudKitContainer = {
    let container = NSPersistentCloudKitContainer(name: "")
    
    container.loadPersistentStores(completionHandler: { })
    
    let options = NSPersistentCloudKitContainerSchemaInitializationOptions()
    try? container.initializeCloudKitSchema(options: options)
            
    return container
}()
Run Code Online (Sandbox Code Playgroud)

之后,您将在“确认部署”窗口中看到许多记录类型已更改。

您还应该注释掉与选项相关的两行,因为不需要每次都初始化方案。当您需要再次更新方案时,只需在这些行中进行注释即可。

另请记住,记录类型一旦部署就无法更改。