CloudKit-如何修改其他用户创建的记录 版本摘要

问题描述

开发中还可以, 但是当我通过TestFlight分发我的应用程序时,我遇到了这个问题。

当我检查一些故障时, 我猜想未创建记录的用户尝试修改记录时,。 顺便说一下,我可以获取所有公共数据库上的记录值。仅执行修改

在下面的图片中,iCloud帐户被写入绿色区域。我预测这些必须相同。

image: Metadata - CloudKit Dashboard

现在,用户正在尝试通过以下代码修改记录:

func modifyRecord() {

    let publicDatabase = CKContainer.default().publiccloudDatabase

    let predicate = nspredicate(format: "accountID == %@",argumentArray: [myID!])
    let query = CKQuery(recordtype: "Accounts",predicate: predicate)

    publicDatabase.perform(query,inZoneWith: nil,completionHandler: {(records,error) in

        if let error = error {
            print("error1: \(error)")
            return
        }

        for record in records! {
        
            /* ↓ New Value */
            record["currentLocation"] = CLLocation(latitude: 40.689283,longitude: -74.044368)

            publicDatabase.save(record,completionHandler: {(record,error) in

                if let error = error {
                    print("error2: \(error)")
                    return
                }
                print("success!")
            })
        }
    })
}

在开发中,我自己创建和修改了所有记录,所以找不到该问题。

版本

Xcode 11.6 / Swift 5

摘要

我猜想必须由同一用户(=相同的iCloud帐户)在此代码中创建和修改记录。 然后,您能告诉我如何修改其他用户创建的记录吗? 首先,我可以这样做吗?

谢谢。

解决方法

好像您有权限问题。在您的cloudkit仪表板中,转到:架构>安全角色

SecurityRoles

然后在“已认证”(表示用户已登录Icloud)下

Authenticated type

您需要为相关记录类型授予“写入”权限。那应该解决它!

Permissions