Cloud Kit Temel Veri Kaydını Sorgulama
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
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:
- 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)
}
}
}
- 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