Cloudkit özel varsayılan bölgesi sorgusunun sonucuna herhangi bir sınır var mı?Özel bölgeden gelen CKQuery CloudKit'ten yalnızca ilk 100 CKRecords değerini döndürür
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)
}
Tamam: Ben yalnızca aşağıdaki sorgu ile ilk 100 kayıtları almak neden hiçbir ipucu var. Edwin cevabında bahsettiği gibi, çözüm, ilk veri bloğunu almak için CKQueryOperation'ı kullanmak ve daha sonra başka bir işlemi başlatmak için completeionBlock içindeki "imleci" kullanmaktır. Standart sorguları için varsayılan sınırı
GÜNCELLEME
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. Bunu buldum. http://stackoverflow.com/a/27135836/893771. Bir parça kod olsa çok yardımcı olur. – CppChase
[Bu yanıt] (http://stackoverflow.com/a/27728609/1966109) benzer bir soruya, tamamlanmamış durumdayken getirinizin sona ermesini önlemek için güçlü bir referansın 'queryOperation'da nasıl saklanacağını gösterir. –
Bu çözüm işlemin sadece 3 kez çalışmasına neden olur !, bunun yerine şunu kullanın: http://stackoverflow.com/a/31664231/530884 – Shaybc