1
レコードをフェッチする方法は多岐に渡り、stackoverflowで同じ問題をチェックしましたが、100を超えるレコードをフェッチすることはできません。CloudKitに100を超えるレコードを含めることはできません
以前は、CKQueryOperationの代わりにCKQueryを使用して、resultsLimit
パラメータを使用していました。ここで
は私のコードです:iOSの9.3には、あなたが複数のフェッチ操作を実行するためにCKQueryCursor
を使用して、フェッチ中にいたところを追跡する必要があります以下
func initData(){
// show activity indicator
self.activityIndicatorView.hidden = false
// hide connection error button
self.connectionErrorButton.hidden = true
let container = CKContainer.defaultContainer()
let publicDB = container.publicCloudDatabase
let predicate = NSPredicate(value: true)
let sort = NSSortDescriptor(key: "id", ascending: true)
var newInfo = Array<CKRecord>()
let query = CKQuery(recordType: "info", predicate: predicate)
query.sortDescriptors = [sort]
let queryOperation = CKQueryOperation(query: query)
queryOperation.queuePriority = .VeryHigh
queryOperation.resultsLimit = 150;
// Fetch the pokemons for the record
func fetched(record: CKRecord!) {
newInfo.append(record)
}
queryOperation.recordFetchedBlock = fetched
queryOperation.queryCompletionBlock = { [unowned self] (cursor, error) in
if (error != nil) {
dispatch_async(dispatch_get_main_queue()) {
self.connectionErrorButton.hidden = false
self.activityIndicatorView.hidden = true
return
}
} else {
dispatch_async(dispatch_get_main_queue()) {
self.infos.removeAll()
self.infos = newInfo
self.tableView.reloadData()
self.activityIndicatorView.hidden = true
return
}
}
}
publicDB.addOperation(queryOperation)
}
iOS 10でこの変更の参考になっていますか? – breakingobstacles
@breakingobstacles fetchAllChangesを検索します。http://asciiwwdc.com/2016/sessions/231 – Luke
fetchAllChangesは、レコード/データベースの変更を取得する新しい操作(例:[CKFetchDatabaseChangesOperation](https:// developer)のみ)で利用できます。 apple.com/reference/cloudkit/ckfetchdatabasechangesoperation))、** CKQueryOperationの**クエリではありません。 [新しいドキュメント](https://developer.apple.com/reference/cloudkit/ckqueryoperation)にはCKQueryOperationに変更はなく、あなたが引用したリンクにそのような参照はありません。 – breakingobstacles