我正在使用以下代码在自定义 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

09-04 14:02