在我的应用程序中,我正在从iCloud中为recordType为“ Person”的人备份。为了获取记录,使用了CKQueryOperation,但是我想以进度百分比显示正在下载数据的进度条。 CKQueryOperation只是批量获取数据,但是没有任何进度跟踪。
///代码:获取行程记录
func fetchYourRecords(_ cursor: CKQueryOperation.Cursor? = nil,completionHandler handler: @escaping YourFetchCompletionHandler) -> Void{
let p = NSPredicate(value: true)
let q = CKQuery(recordType: "Person",predicate: p)
let queryOperation = CKQueryOperation(query: q)
queryOperation.qualityOfService = .userInitiated
queryOperation.queuePriority = .high
var result = [CKRecord]()
queryOperation.recordFetchedBlock = { item in
result.append(item)
}
queryOperation.resultsLimit = 2000
queryOperation.queryCompletionBlock = { [weak self] (cursor : CKQueryOperation.Cursor!,error : Error!) in
if cursor != nil {
print("there is more data to fetch")
let newOperation = CKQueryOperation(cursor: cursor)
newOperation.recordFetchedBlock = {item in
result.append(item)
}
newOperation.queryCompletionBlock = queryOperation.queryCompletionBlock
self!.privateDatabase.add(newOperation)
}
handler(result,cursor)
}
privateDatabase.add(queryOperation)
}
我希望下载进度条从0%开始,然后转到100%,如该图所示