Ios 如何在自定义区域中创建CKRecord而不必指定记录名?

Ios 如何在自定义区域中创建CKRecord而不必指定记录名?,ios,swift,cloudkit,Ios,Swift,Cloudkit,我正在使用以下代码在自定义私有CKRecordZone中创建CKRecord: let noteZoneID = CKRecordZone.ID(zoneName: CloudKitManager.noteZoneName, ownerName: CKCurrentUserDefaultName) return CKRecord(recordType: Note.recordType, zoneID: noteZoneID) 这

我正在使用以下代码在自定义私有
CKRecordZone
中创建
CKRecord

let noteZoneID = CKRecordZone.ID(zoneName: CloudKitManager.noteZoneName,
                                 ownerName: CKCurrentUserDefaultName)
return CKRecord(recordType: Note.recordType, zoneID: noteZoneID)
这似乎很好,但我得到了一个警告:
“init(recordType:zoneID:)”已被弃用:请改用init(recordType:recordID:)+CKRecord.ID(zoneID:)

如果我改用这些方法,我想我必须做一些类似的事情:

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
值,可以向其传递
UUID().uuidString

记录ID对象通常在创建记录时自动创建 新记录,但[…]在创建时必须创建记录ID对象 要将记录保存在默认区域以外的区域。