将CloudKit RecordID保存到CoreData

Tra*_*Val 7 core-data swift cloudkit

我有一系列CloudKit记录,并希望将记录ID存储到核心数据中,因此当我再次查询云时,我不会记下相同的记录.我只是做一个不包含核心数据记录的NSpRedicate.

但是,如果出现错误,如何将记录ID保存到核心数据.认为这是一个类型问题.

现行代码:

 coreData.recordRecordID = self.cloudKitRecords[0].recordID as? String
Run Code Online (Sandbox Code Playgroud)

当前得到CKRecord作为String的错误总是失败,我并不感到惊讶.需要能够保存recordID然后从核心数据中获取recordID.

谢谢

小智 8

import Foundation

import CoreData

import CloudKit

class Entity: NSManagedObject {

// MARK: - Properties

@NSManaged var recordID: CKRecordID?

// Additional properties here

}
Run Code Online (Sandbox Code Playgroud)

然后将Core Data属性类型更改为Transformable而不是String.


Edw*_*eer 7

你可以得到这样的id:

coreData.recordRecordID = self.cloudKitRecords[0].recordID.recordName
Run Code Online (Sandbox Code Playgroud)

它将是一个字符串.如果你想从中创建一个CKRecordID,那么你可以使用它创建一个

var myID = = CKRecordID(recordName: yourStringID)
Run Code Online (Sandbox Code Playgroud)

  • 请注意,相同的记录ID可以存在于不同的区域中,因此如果您使用多个区域,则需要包含区域ID(如果您需要此标识符才能真正唯一). (2认同)