0

PythonとpyObjCを使用して、「職場」と「自宅」の両方の電話番号をMac AddressBookに追加しようとしています。複数値オブジェクトを追加する必要があると思いますが、pyobjc を使用してこれを行う方法がわかりません。これまでにまとめたコードサンプルは次のとおりです。

import AddressBook
from AddressBook import *

ab = AddressBook.ABAddressBook.sharedAddressBook()
p = ABPerson.alloc().init()
p.setValue_forProperty_('JOE', kABFirstNameProperty)
p.setValue_forProperty_('TEST', kABLastNameProperty)

homephoneNumberMultiValue = ABMultiValueCreateMutable()
homephoneNumberMultiValue = ABMultiValueAddValueAndLabel(homephoneNumberMultiValue, '555-555-1212', kABPersonPhoneMobileLabel);
p.setValue_(kABPersonPhoneProperty, homephoneNumberMultiValue);

workphoneNumberMultiValue = ABMultiValueCreateMutable()
workphoneNumberMultiValue = ABMultiValueAddValueAndLabel(workphoneNumberMultiValue, '555-555-1213', kABPersonWorkMobileLabel);  
p.setValue_(kABPersonPhoneProperty, workphoneNumberMultiValue);

ab.addRecord_(p)
ret = ab.save()
4

1 に答える 1

1

MultiValue はまさにその理由で複数値と呼ばれます - 1 つのオブジェクト、複数の値。2 つの別個のオブジェクトを作成する必要はありません。

次の例を参照してください。

import AddressBook
from AddressBook import *

ab = AddressBook.ABAddressBook.sharedAddressBook()
p = ABPerson.alloc().init()
p.setValue_forProperty_('JOE', kABFirstNameProperty)
p.setValue_forProperty_('TEST', kABLastNameProperty)

phoneNumberMultiValue = ABMultiValueCreateMutable()
ABMultiValueAdd(phoneNumberMultiValue, '555-555-1212', kABPhoneMobileLabel, None);
ABMultiValueAdd(phoneNumberMultiValue, '555-555-1213', kABPhoneWorkLabel, None);
p.setValue_forProperty_(phoneNumberMultiValue, kABPhoneProperty);

ab.addRecord_(p)
ret = ab.save()

つまり、1 つの MultiValue を作成し、そこに異なるラベルの下に異なる値を追加します。この例は、Python 2.7 を使用して 10.8.3 でテストされ、動作しています。

于 2013-01-24T21:19:15.313 に答える