我在 AddressBook 中创建了一个名为“Qref”的自定义属性。我可以使用 来检查它是否存在[ABPerson properties]
,并且对于我编写的任何测试应用程序来说它总是存在的。
顺便说一句,您不能删除自定义属性,因为[ABPerson removeProperties]
尚未实现。让我知道是否有,因为我需要删除我打错名字的人。
我用这段代码设置了一个属性值。
ABPerson *p = <person chosen from a PeoplePicker>;
NSError *e;
if (![p setValue: aString forProperty:@"Qref" error:&e]) {
[NSAlert alertWithError:e]runModal;
}
(我还没有看到警报,但有时会在控制台中收到一堆错误消息。)此时我可以离开 PeoplePicker 中的人并返回以找到正确设置的值。如果我检查[[ABAddressBook sharedAddressBook] hasUnsavedChanges]
结果为否,那么显然更改自定义属性值不算作更改,所以我通过插入虚拟人来强制保存(请提出更好的方法),然后执行
[[ABAddressBook sharedAddressBook] save];
如果虚拟人正在运行,它会立即出现在 AddressBook 中,所以有些事情是正确的。但是当我关闭我的应用程序并再次运行它时,我发现我设置的值已经消失了。(MacOSX-狮子)