2014-10-15 17 views
13

Tôi đang gặp sự cố này khi tôi lưu nội dung nào đó vào icloud bằng CloudKit nhưng ngay lập tức tìm nạp kết quả không trả lại dữ liệu mới nhất được chèn vào.CloudKit không trả về dữ liệu gần đây nhất

Ví dụ

let todoRecord = CKRecord(recordType: "Todos") 
todoRecord.setValue(todo, forKey: "todotext") 
publicDB.saveRecord(todoRecord, completionHandler: { (record, error) -> Void in 
     NSLog("Saved in cloudkit") 
     let predicate = NSPredicate(value: true) 
     let query = CKQuery(recordType: "Todos", 
      predicate: predicate) 

     self.publicDB.performQuery(query, inZoneWithID: nil) { 
      results, error in 
      if error != nil { 
       dispatch_async(dispatch_get_main_queue()) { 
        self.delegate?.errorUpdating(error) 
        return 
       } 
      } else { 
       NSLog("###### fetch after save : \(results.count)") 
       dispatch_async(dispatch_get_main_queue()) { 
        self.delegate?.modelUpdated() 
        return 
       } 
      } 
     } 

Kết quả:

Before saving in cloud kit : 3 
CloudKit[22799:882643] Saved in cloudkit 
CloudKit[22799:882643] ###### Count after save : 3 

Am tôi thiếu một cái gì đó ở đây chàng trai?

Trả lời

13

Có sự chậm trễ giữa thời điểm lưu bản ghi trong CloudKit và khi các chỉ mục đã được cập nhật với các giá trị từ bản ghi đó.

Khi CKModifyRecordsOperation hoàn tất thành công, bạn có thể tìm nạp ngay hồ sơ đó thông qua mã định danh hồ sơ của nó.

Tuy nhiên, có sự chậm trễ trong khi bản ghi được thêm vào chỉ mục tìm kiếm trên máy chủ và các truy vấn sẽ không tìm thấy bản ghi đó ngay lập tức.

Nếu bạn đang sử dụng CKQuery để quay lại chế độ xem, bạn sẽ muốn giữ một bảng bên hồ sơ đã được sửa đổi cục bộ và ghép chúng vào chế độ xem cho đến khi truy vấn bắt đầu trả lại bản ghi đó.

+3

Tài liệu của Apple: "Chỉ mục được cập nhật không đồng bộ để chúng không được đảm bảo là hiện tại". Từ trang này: https://developer.apple.com/library/ios/documentation/DataManagement/Conceptual/CloutKitWebServicesReference/QueryingRecords/QueryingRecords.html – stevex

Các vấn đề liên quan