2013-01-24 67 views
0

我一直在試圖使用python和pyObjC將「工作」和「家庭」電話號碼添加到Mac地址簿中。我相信你需要添加一個多值對象,但我不知道如何使用pyobjc做到這一點。下面的代碼示例到目前爲止,我已經把:如何使用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() 

回答

1

多值被稱爲多值正是因爲這個原因 - 一個對象,多個值。您不需要創建兩個單獨的對象。

見這個例子:

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() 

換句話說,您可以創建一個多值,並在不同的標籤添加有不同的價值觀。這個例子經過python 2.7的測試並在10.8.3上工作。

+0

非常感謝你的工作。 –

相關問題