title: How can I get the values I set for custom properties in AddressBook to persist?
body: <p>I have created a custom property in AddressBook named "Qref". I can check it's there using <code>[ABPerson properties]</code>, and it's always there for any test app I write.</p>
  
  <p>By the way, you can't remove custom properties, because <code>[ABPerson removeProperties]</code> hasn't been implemented. Let me know if it ever is, because I need to remove one whose name I mistyped.</p>
  
  <p>I set a property value with this code.</p>
  
  <pre><code>ABPerson *p = &lt;person chosen from a PeoplePicker&gt;;
  NSError *e;
  if (![p setValue: aString forProperty:@"Qref" error:&amp;e]) {
    [NSAlert alertWithError:e]runModal;
  }
  </code></pre>
  
  <p>(I have never seen the alert yet, but sometimes get a heap of error messages in the console.)
  At this point I can navigate away from the person in the PeoplePicker and return to find the value correctly set.
  If I check <code>[[ABAddressBook sharedAddressBook] hasUnsavedChanges]</code> the result is NO, so clearly changing a custom property value doesn't count as a change, so I force a save by inserting dummy person (please suggest a better way), then executing</p>
  
  <pre><code>[[ABAddressBook sharedAddressBook] save];
  </code></pre>
  
  <p>The dummy person appears immediately in AddressBook if it is running, so something's right. But when I close my app and run it again, I find the values I set have gone.
  (MacOSX-Lion)</p>