Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios CloudKit-如何修改其他用户创建的记录_Ios_Swift_Xcode_Cloudkit - Fatal编程技术网

Ios CloudKit-如何修改其他用户创建的记录

Ios CloudKit-如何修改其他用户创建的记录,ios,swift,xcode,cloudkit,Ios,Swift,Xcode,Cloudkit,在开发中还可以,, 但当我通过TestFlight发布我的应用程序时,我遇到了这个问题 当我检查一些故障时, 我猜,当没有创建记录的用户试图修改它时,就不能这样做。 顺便说一下,我可以获取公共数据库中的所有记录值。只有修改未执行 在下图中,iCloud帐户以绿色区域书写。我预测这些必须是相同的 现在,用户正试图通过以下代码修改记录: func modifyRecord() { let publicDatabase = CKContainer.default().publicCloud

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

当我检查一些故障时, 我猜,当没有创建记录的用户试图修改它时,就不能这样做。 顺便说一下,我可以获取公共数据库中的所有记录值。只有修改未执行

在下图中,iCloud帐户以绿色区域书写。我预测这些必须是相同的

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

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!")
            })
        }
    })
}
在开发过程中,我自己创建和修改了所有记录,所以我没有发现这个问题

版本 代码11.6/Swift 5

总结 我猜在这段代码中有必要由同一个用户(=同一个iCloud帐户)创建和修改记录。
那么,您能告诉我如何修改其他用户创建的记录吗? 首先,我能做到吗


谢谢。

看起来您有权限问题。在cloudkit仪表板中,转至:架构>安全角色

然后在“Authenticated”(即用户登录到Icloud)下

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