Czy istnieje limit wyniku zapytania do Cloudkit prywatnej strefy domyślnej? Nie mam pojęcia, dlaczego otrzymałeś tylko pierwsze 100 rekordów z następującym zapytaniem:CKQuery ze strefy prywatnej zwraca tylko pierwszych 100 CKRecords z CloudKit
let p = NSPredicate(format: "(type == 'entered') AND (timestamp >= %@) AND (timestamp <= %@)", from, to)
let q = CKQuery(recordType: self.beaconRecordType, predicate: p)
q.sortDescriptors = [NSSortDescriptor(key: "timestamp", ascending: true)]
self.privateDatabase?.performQuery(q, inZoneWithID: nil, completionHandler: { results, error in
//count = 100
println(results.count)
}
porządku. Jak wspomniał Edwin w odpowiedzi, rozwiązaniem jest użycie CKQueryOperation do pobrania początkowego bloku danych, a następnie użycie "kursora" w zakończeniuBlock, aby uruchomić inną operację. Oto przykład:
UPDATE
func fetchBeacons(from:NSDate, to:NSDate) {
let p = NSPredicate(value: true)
let q = CKQuery(recordType: self.beaconRecordType, predicate: p)
let queryOperation = CKQueryOperation(query: q)
queryOperation.recordFetchedBlock = fetchedARecord
queryOperation.queryCompletionBlock = { [weak self] (cursor : CKQueryCursor!, error : NSError!) in
if cursor != nil {
println("there is more data to fetch")
let newOperation = CKQueryOperation(cursor: cursor)
newOperation.recordFetchedBlock = self!.fetchedARecord
newOperation.queryCompletionBlock = queryOperation.queryCompletionBlock
self!.privateDatabase?.addOperation(newOperation)
}
}
privateDatabase?.addOperation(queryOperation)
}
var i = 0
func fetchedARecord (record: CKRecord!) {
println("\(NSDate().timeIntervalSinceReferenceDate*1000) \(++i)")
}
OK. Znalazłem to. http://stackoverflow.com/a/27135836/893771. Jednak kawałek kodu bardzo by pomógł. – CppChase
[Ta odpowiedź] (http://stackoverflow.com/a/27728609/1966109) na podobne pytanie pokazuje również, jak zachować silne odniesienie do 'queryOperation', aby zapobiec zakończeniu pobierania, gdy jest ono niekompletne. –
to rozwiązanie spowoduje, że operacja będzie działać tylko 3 razy !, użyj zamiast tego: http://stackoverflow.com/a/31664231/530884 – Shaybc