0

斯威夫特 4.2 iOS 11.x

我一定错过了一些事情,因为这肯定会起作用。我得到了在自定义区域中查询私有数据库的代码。尽管我在那里有记录,但它什么也没返回。我为所有内容添加了索引!我还更改了权限中的角色,以便任何经过身份验证的用户都可以读取记录。

public func cleanUpImages(zone2U:String) {
    var records2Delete:[CKRecord.ID] = []
    let zone2D = CKRecordZone(zoneName: zone2U)

    let predicate = NSPredicate(value: true)
    let query = CKQuery(recordType: remoteRecords.notificationMedia, predicate: predicate)
    let operation = CKQueryOperation(query: query)
    operation.recordFetchedBlock = { record in
        records2Delete.append(record.recordID)
    }
    operation.queryCompletionBlock = { cursor, error in
        print(records2Delete.count)
    }
    CKContainer.default().privateCloudDatabase.add(operation)

notificationMedia 是一个全局静态变量,我也用它来保存所说的记录,所以它不会是错误的/不同的。

4

2 回答 2

1

设置zoneIDofoperation因为现在您正在查询默认区域。

let operation = CKQueryOperation(query: query)
operation.zoneID = zone2D.zoneID
于 2018-10-02T18:31:22.897 回答
0

我想我找到了答案。我正在使用不推荐使用的方法来保存我的记录。

let customRecord = CKRecord(recordType: remoteRecords.notificationMedia, zoneID: zone2D.zoneID)

我改成这个了。。

let customID = CKRecord.ID(recordName: remoteRecords.notificationMedia, zoneID: zone2D.zoneID)
let customRecord = CKRecord(recordType: remoteRecords.notificationMedia, recordID: customID)

现在我在 cloudKit 数据库的 sharedDatabase 中找到我的记录,当我使用rmaddy指出的区域集上方显示的方法时, 我找到了我的记录。

于 2018-10-02T19:27:05.347 回答