Skip saving specific properties


#1

I have an Objective-C class - UserProfile - that inherits from CBLModel. It has several @synthesize fields that I don’t want to persist to Couchbase Lite; they are annotated that way for legacy reasons.

How do I specify those fields be left out during an object save?


#2

Hey @boscomonkey,

You may first define the keys from the Profile by looking at its document.properties

userProfile.document.properties

Then can simply leave the fields out when you create your new object that will contain the object map of keys-values.

//Define the new document’s properties:
NSDictionary *doc = @{@“inherit_text”: textField.text,
@“check”: @NO,
@“created_at”: [CBLJSON JSONObjectWithDate[NSDate date]]};

Upon creating the object, you then specify the database and save the object into the document. In Objective-C, the HashMap object is a NSMutableDictionary where below

NSMutableDictionary* updatedProperties = [doc.properties mutableCopy];
updatedProperties[@“new item”] = @“adding new entry into existing document”;
updatedProperties[@“inherit_text”] = @“text to save”;

Then can save the document back into the database.

// Save the document:
CBLDocument *doc = [_database createDocument];
NSError *error;
if ([doc putProperties: document error: &error]) {
    textField.text = nil;
} else {
    AppDelegate *app = [[UIApplication sharedApplication] delegate];
    [app showMessage:@"Couldn't save new item" withTitle:@"Error"];
}

You may reference the guide here as well for further reading.