cloudkit 0.2.0

Safe Rust bindings for Apple's CloudKit framework — iCloud databases and sync on macOS
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use cloudkit::prelude::*;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let record = CKRecord::new("OperationRecord")?;
    let modify = CKModifyRecordsOperation::new(vec![record], vec![])
        .with_save_policy(CKRecordSavePolicy::ChangedKeys)
        .with_atomic(false);
    let query = CKQueryOperation::new(CKQuery::match_all("OperationRecord")).with_results_limit(1);
    let fetch_records = CKFetchRecordsOperation::new(vec![CKRecordID::new("operation-demo")]);
    let fetch_db_changes = CKFetchDatabaseChangesOperation::new().with_fetch_all_changes(false);
    let fetch_zone_changes = CKFetchRecordZoneChangesOperation::new(vec![CKRecordZoneID::new("OpsZone", "__defaultOwner__")]);

    println!("modify records_to_save={} atomic={}", modify.records_to_save().len(), modify.atomic());
    println!("query limit={:?} fetch_records={} db_changes_fetch_all={} zone_changes={}", query.results_limit(), fetch_records.record_ids().len(), fetch_db_changes.fetch_all_changes(), fetch_zone_changes.zones().len());
    println!("✅ operation area OK");
    Ok(())
}