我正在使用以下代码在自定义私有CKRecordZone中创建一个CKRecord
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一起出现,有什么特别的原因吗
发布于 2019-04-30 19:11:44
对于自定义区域,没有办法绕过这一步。如果你不想给recordName赋值,你可以给它传递一个UUID().uuidString。
记录ID对象通常是在创建新记录时自动创建的,但是... 如果要将记录保存在默认区域以外的区域中,则必须创建记录ID对象。
https://developer.apple.com/documentation/cloudkit/ckrecord/id
https://stackoverflow.com/questions/55904084
复制相似问题