-1

我有一个使用用户通讯录作为联系人的应用程序。我还有其他信息希望存储在每个用户的基础上(每个通讯簿条目的基础上)。我允许用户导入单个用户、通讯簿组或他们的所有联系人。因为我希望继续允许外部应用程序更改用户地址簿,所以我没有导入所有信息。相反,我选择更改每个导入用户的通讯簿条目,添加一个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);

有人可以帮忙吗?我会很感激。

4

1 回答 1

3

知道了!

这太简单了!感谢链接文本,他们遇到了同样的问题,在这个问题上缺乏谷歌的答案。谢谢,凯西!

recordABPerson 记录是并且所有的ABCreate东西都已经完成并且i是顺序记录定位器整数......

        ABMutableMultiValueRef im = ABMultiValueCreateMutable(kABMultiDictionaryPropertyType);
        NSMutableDictionary *imDict = [[NSMutableDictionary alloc] init];
        [imDict setObject:@"MyAppName"  forKey:(NSString*)kABPersonInstantMessageServiceKey];

        NSMutableString *iMID = [NSMutableString stringWithFormat:@"%i",i];
        [iMID appendString:@"RL@MyAppDomain"];

        [imDict setObject:iMID forKey:(NSString*)kABPersonInstantMessageUsernameKey];
        ABMultiValueAddValueAndLabel(im, imDict, kABHomeLabel, NULL);
        [imDict release];
        ABRecordSetValue(record, kABPersonInstantMessageProperty, im, NULL);
于 2010-09-21T20:36:05.210 回答