В настоящее время я переношу свои данные из Parse в CloudKit. Я смог импортировать свои данные в структуру CloudKit, но теперь я не получаю правильное количество записей. Вместо 52 пользователей (которые отображаются в информационной панели) я получаю 289 записей. Я попробовал это с простыми CKQuery
и CKQueryOperation
.CloudKit возвращает слишком много записей
CKQuery
возвращает 100 результатов за лимит, и когда я использую CKQueryOperation
, я получаю 289 результатов со многими повторяющимися записями.
Я использую следующий код (CKQuery путь ..), чтобы извлечь все мои пользователь:
let query = CKQuery(recordType: "User", predicate: NSPredicate(value:true))
let container = CKContainer.defaultContainer()
let publicDB = container.publicCloudDatabase
publicDB.performQuery(query, inZoneWithID: nil) { (records, error) in
print("USER public count: \(records?.count)")
}
И для CKQueryOperation я написал вспомогательную библиотеку, которая портирование результата автоматически в быструю классовой структуру.
let uw = ROCloudBaseWebservice<User>()
uw.load { (data) in
logger.debug("User count (CKQueryOperation): \(data.count)")
}
Если вы хотите увидеть код с этой нагрузки вы можете увидеть здесь: https://github.com/prine/ROCloudModel/blob/master/Source/ROCloudBaseWebservice.swift
У меня то же самое с моими 3 другими таблицами, где я также получить неверное количество данных. Только одна таблица, которая имеет 4 записи, получает правильный объем данных.
У кого-нибудь еще была эта проблема? Я использую ссылки в таблицах. Может ли это привести к проблеме?