私は CloudKit を使用しており、「modificationDate」でレコードをフェッチしようとしていますが、最も古いものから結果の制限を設定します。たとえば、月、火、水、木に作成された 4 つのレコードがあり、そのうちの 2 つだけを選択すると、水、木ではなく、月、火のレコードが取得されます。以下は、修正しようとしているコードです。
func fetchRecentModified() {
let predicate = NSPredicate(value: true)
let sort = NSSortDescriptor(key: "votes", ascending: true)
let query = CKQuery(recordType: "Dog", predicate: predicate)
query.sortDescriptors = [sort]
let operation = CKQueryOperation(query: query)
operation.resultsLimit = recordFetchMax
operation.recordFetchedBlock = { (record) in
VoteQueue.sharedInstance.append(record)
}
operation.queryCompletionBlock = { (cursor, error) in
dispatch_async(dispatch_get_main_queue()) {
if error == nil {
print("There is no error fetching records \(recordFetchMax)")
print(VoteQueue.sharedInstance)
API.shared.flagRecords(VoteQueue.sharedInstance)
} else {
print("There was a problem fetching the list of dogs please try again")
print(error)
}
}
}
self.database.addOperation(operation)
}
NSSortDescriptor
昇順を偽にフラグを立てるのと同じくらい簡単だと思いました。しかし、これは機能しませんでした (さらにテストした結果、選択したフィールドの値が 0 のレコードのみが返されることがわかりました)。
さらに、さまざまな述語比較を試してみましたが、役に立ちませんでした。何かご意見は?CloudKit を永遠にあきらめる準備ができています。