如何将 CKRecordZone 分配给 CKRecord
Posted
技术标签:
【中文标题】如何将 CKRecordZone 分配给 CKRecord【英文标题】:How to assign a CKRecordZone to a CKRecord 【发布时间】:2019-03-23 03:33:39 【问题描述】:我正在尝试创建一个数据库,管理员用户可以在其中创建一个组,该组存储为组 CKRecord 类型。我希望将此记录放置一个自定义区域,该区域以管理员用户决定的组名命名。如何初始化要分配给该自定义区域的组私有记录(不使用已弃用的函数)。
func createGroup(groupName: String)
let groupRecord = CKRecord(recordType: recordTypes.group)
groupRecord[groupRecordType.groupName] = groupName
let share = CKShare(rootRecord: groupRecord)
share.publicPermission = .readWrite
let groupZone = CKRecordZone(zoneName: groupName)
//Need to somehow connect the groupZone to the groupRecord
【问题讨论】:
Querying shared records in a ckzone in the private database returns nothing的可能重复 【参考方案1】:你可以使用不同的 CKShare 初始化器:
CKShare(rootRecord: CKRecord, shareID: CKRecord.ID)
recordZone 是 CKRecord.ID 的一部分:
CKRecord.ID(recordName: String, zoneID: CKRecordZone.ID)
所以更像是:
func createGroup(groupName: String)
let groupRecord = CKRecord(recordType: recordTypes.group)
groupRecord[groupRecordType.groupName] = groupName
let groupZone = CKRecordZone(zoneName: groupName)
let shareID = CKRecord.ID(recordName: groupName, zoneID: groupZone)
let share = CKShare(rootRecord: groupRecord, shareID: shareID)
share.publicPermission = .readWrite
recordName 应该保证是唯一的 - 否则您可能会遇到问题。
【讨论】:
以上是关于如何将 CKRecordZone 分配给 CKRecord的主要内容,如果未能解决你的问题,请参考以下文章
为啥 CKRecordZone 对象的属性“capabilities”的值等于 7?
我们应该在 CKDatabase 和 CKRecordZone 中分别缓存一个 CKServerChangeToken 吗?
如何将 TemplatedParent Content 属性分配给变量?