如何用previousServerchangetoken初始化CKFetchRecordZoneChangesOperation?

Mou*_*jee 2 iphone xcode ios objective-c-blocks cloudkit

我从CloudKit Server获取记录更改,但每次出现错误

[LogFacilityCK]操作E0367CA861DAF5A9出现连接错误:错误域= NSCocoaErrorDomain代码= 4097"连接到名为com.apple.cloudd的服务"UserInfo = {NSDebugDescription =连接到名为com.apple.cloudd的服务}

我知道原因,因为我错误地初始化CKFetchRecordZoneChangesOperation请检查以下代码并纠正我:

 CKFetchRecordZoneChangesOperation  *operation = [[CKFetchRecordZoneChangesOperation alloc]initWithRecordZoneIDs:@[ recordZoneID ] optionsByRecordZoneID:@{@"Zone":recordZoneID,@"FetchRecordZoneChangesOptions":option}];
Run Code Online (Sandbox Code Playgroud)

我需要这方面的帮助:

**@{@"Zone":recordZoneID,@"FetchRecordZoneChangesOptions":option}];**
Run Code Online (Sandbox Code Playgroud)

Bar*_*zyk 5

只需创建变量:

var serverChangeToken: CKServerChangeToken? {

    guard let encoded = UserDefaults(suiteName: SharedGroupName)?.data(forKey: ServerChangeTokenKey) else {
        return nil
    }

    return NSKeyedUnarchiver.unarchiveObject(with: encoded) as? CKServerChangeToken
}
Run Code Online (Sandbox Code Playgroud)

然后初始化一个对象:

        let zone = CKRecordZone(zoneName: "my_custom_zone_name")
        let options = CKFetchRecordZoneChangesOptions()
        options.previousServerChangeToken = serverChangeToken

        let operation = CKFetchRecordZoneChangesOperation(recordZoneIDs: [zone.zoneID], optionsByRecordZoneID: [zone.zoneID: options])
Run Code Online (Sandbox Code Playgroud)