CloudKit - 如何修改其他用户创建的记录
CloudKit - How to modify the record created by other user
开发中还可以,
但是当我通过 TestFlight 分发我的应用程序时,我遇到了这个问题。
当我检查一些故障时,
我猜想 当没有创建记录的用户试图修改它时,不能那样做。
顺便说一句,我可以获取 Public 数据库中的所有记录值。仅修改未执行。
在下图中,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 仪表板中,转到:架构 > 安全角色
然后在'Authenticated'下(表示用户登录到Icloud)
您需要向相关记录类型授予 'Write' 权限。那应该可以解决它!
开发中还可以, 但是当我通过 TestFlight 分发我的应用程序时,我遇到了这个问题。
当我检查一些故障时, 我猜想 当没有创建记录的用户试图修改它时,不能那样做。 顺便说一句,我可以获取 Public 数据库中的所有记录值。仅修改未执行。
在下图中,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 仪表板中,转到:架构 > 安全角色
然后在'Authenticated'下(表示用户登录到Icloud)
您需要向相关记录类型授予 'Write' 权限。那应该可以解决它!