Cloud Kit Temel Veri Kaydını Sorgulama

Sep 03 2020

Cihazlar arasında senkronize edilebilmesi için temel verileri depolamak için CloudKit'i kullanmaya çalıştığım bir uygulamam var.

Senkronizasyon iyi çalışıyor, yaşadığım sorun, uygulamanın veritabanına bazı ilk verileri eklemesi, bu da başka bir cihaza yüklendiğinde kopyalanmasına neden oluyor. Şu anda, ilk çalıştırma gerçekleştirildiyse bir bool'u yerel olarak depolamak için kullanıcı varsayılanlarını kullanıyorum, bu açıkçası yalnızca cihaz başına çalışıyor

Bulutta veri olup olmadığını görmenin ve ilk verilerin eklenmesini engellemenin herhangi bir yolu var mı?

Apple'ın belgeleri, bir nesne zaten varsa, ancak ilk başlatıldığında yerel mağazada hiçbir nesne yoksa bunun mümkün olduğunu önerir. https://developer.apple.com/documentation/coredata/mirroring_a_core_data_store_with_cloudkit/reading_cloudkit_records_for_core_data

Yanıtlar

1 SteveB Sep 04 2020 at 15:00

Her iki cihazın da aynı CloudKit girişini kullandığını varsayarsak, kontrol etmek istediğiniz veriler Kullanıcı kaydında depolanıyorsa, bunu yapabilirsiniz:

  1. Bu kullanıcı için CloudKit Kimliğini alın
func iCloudUserIDAsync(complete: @escaping (_ instance: CKRecord.ID?, _ error: NSError?) -> ()) {
        let container = CKContainer.default()
        container.fetchUserRecordID() {
            recordID, error in
            
            if let error = error {
               //handle
            } else {
                self.userRecordID = recordID
                complete(recordID, nil)
            }
        }
    }
  1. Ardından, kullanıcıyı geri almak için CloudKit'i sorgulamak için bu kimliği kullanın:
CKContainer.default().publicCloudDatabase.fetch(withRecordID: userRecordID) { (results, error ) in
     if results != nil {
         //got the user record, do what you want with it
     }
     if let error = error {
         //handle error
     }
}

Alternatif olarak, verileriniz kullanıcı kaydında değilse, CKQueryOperation kullanarak bir sorgu yapmak isteyeceksiniz ve tahminler: İyi öğretici burada: https://www.raywenderlich.com/4878052-cloudkit-tutorial-getting-started