「Qref」という名前のカスタム プロパティを AddressBook に作成しました。を使用してそこにあることを確認でき[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 内の人から離れて戻り、正しく設定された値を見つけることができます。結果がNOであることを確認[[ABAddressBook sharedAddressBook] hasUnsavedChanges]
した場合、明らかにカスタムプロパティ値の変更は変更としてカウントされないため、ダミーの人物を挿入して強制的に保存し(より良い方法を提案してください)、次に実行します
[[ABAddressBook sharedAddressBook] save];
AddressBook が起動していれば、すぐにダミーの人物が表示されるので、問題ありません。しかし、アプリを閉じて再度実行すると、設定した値がなくなっていることがわかります。(MacOSX-ライオン)