我正在使用以下代码在自定义 private CKRecord
中创建CKRecordZone
:
let noteZoneID = CKRecordZone.ID(zoneName: CloudKitManager.noteZoneName,
ownerName: CKCurrentUserDefaultName)
return CKRecord(recordType: Note.recordType, zoneID: noteZoneID)
这似乎工作正常,但我收到警告:
'init(recordType:zoneID:)' is deprecated: Use init(recordType:recordID:) + CKRecord.ID(zoneID:) instead
如果我改用这些方法,我想我必须做些类似的事情:
let noteZoneID = CKRecordZone.ID(zoneName: CloudKitManager.noteZoneName,
ownerName: CKCurrentUserDefaultName)
let recordID = CKRecord.ID(recordName: "UniqueRecordName", zoneID: noteZoneID)
return CKRecord(recordType: Note.recordType, recordID: recordID)
这种方法的问题在于,我突然要负责创建唯一的
recordName
,但我不明白为什么会这样。是否存在创建记录以消除该责任的替代方法?我的应用程序代码应带有recordName
的原因是否具体? 最佳答案
对于自定义区域,无法绕过此方法。如果您不想分配recordName
值,则可以将其传递给UUID().uuidString
。
记录ID对象通常在您创建记录ID对象时自动创建
新记录,但是在[...] 时,您必须创建记录ID对象
想要将记录保存在默认区域以外的区域中。
https://developer.apple.com/documentation/cloudkit/ckrecord/id