【发布时间】:2010-09-21 18:57:59
【问题描述】:
我有一个应用程序使用用户的通讯录作为联系人。我还希望按用户(按通讯簿条目)存储其他信息。我允许用户导入单个用户、通讯簿组或他们的所有联系人。因为我希望继续允许外部应用程序更改用户通讯录,所以我没有导入所有信息。相反,我选择更改每个导入用户的通讯簿条目,添加一个kABPersonInstantMessageProperty 键。我想用MyAppsRecordLocaterNumber@MyAppsDomain.com 作为用户名填充到这个键。我认为最终用户会立即将其视为a: 不显眼,b: 是指向我的应用程序信息的链接(将外部联系信息与我的应用程序添加和保留的内部信息挂钩)。唯一的问题?我不知道如何向kABPersonInstantMessageProperty 键添加条目。我已经想出了如何添加多值条目,例如“家庭地址”,但是在搜索堆栈溢出时,我想出了 4 个(只有四个!)关于此键(kABPersonInstantMessageProperty)的问题的条目。
下面是我将“家庭地址”添加到一个人的通讯录条目的部分代码,我承认我不知道如何将其更改为 kABPersonInstantMessageProperty。
ABMutableMultiValueRef address = ABMultiValueCreateMutable(kABMultiDictionaryPropertyType);
NSMutableDictionary *addressDict = [[NSMutableDictionary alloc] init];
NSMutableString *street = [NSMutableString stringWithFormat:@"%i",i];
[street appendString:@" Main Street"];
[addressDict setObject:[NSString stringWithString:street] forKey:(NSString *)kABPersonAddressStreetKey];
[addressDict setObject:@"San Jose" forKey:(NSString *)kABPersonAddressCityKey];
[addressDict setObject:@"CA" forKey:(NSString *)kABPersonAddressStateKey];
NSMutableString *zip = [NSMutableString stringWithString:@"95"];
[zip appendString:[NSString stringWithFormat:@"%00i",i]];
[addressDict setObject:zip forKey:(NSString *)kABPersonAddressZIPKey];
ABMultiValueAddValueAndLabel(address, addressDict, kABHomeLabel, NULL);
ABRecordSetValue(record, kABPersonAddressProperty, address, NULL);
// add the record
ABAddressBookAddRecord(addressBook, record, NULL);
有人可以帮忙吗?我会很感激。
【问题讨论】:
-
当人们对一个问题投反对票并且不说为什么时,您不讨厌它吗?在我自己提出(并回答)我的问题后将近 1 年我登录了......并且有人在 3 天前否决了这个问题!哼! Downvoters 应该列在 cmets 中,这样我们就可以验证我们为什么问它。这个问题有代码和提出这个问题的正当理由。想知道任何人都会遇到什么问题!
标签: iphone sdk contacts addressbook abaddressbook