2010-09-21 2 views
-1

У меня есть приложение, которое использует адресную книгу пользователя для контактов. У меня также есть другая информация, которую я хочу сохранить для каждого пользователя (для каждой записи в адресной книге). Я разрешаю пользователю импортировать одного пользователя, группу адресной книги или всех своих контактов. Поскольку я хочу продолжать разрешать внешним приложениям изменять адресную книгу пользователей, я не импортирую всю информацию. Вместо этого я решил изменить запись в адресной книге для каждого импортированного пользователя, добавив ключ kABPersonInstantMessageProperty. Я хочу заполнить этот ключ с помощью [email protected] в качестве имени пользователя. Я решил, что это будет немедленно замечено конечным пользователем как a: ненавязчивым, так и b: ссылкой на информацию моего приложения (подключение внешней контактной информации с внутренней информацией, которую добавляет и поддерживает мое приложение). Единственная проблема? У меня нет идеи, как добавить запись в ключ kABPersonInstantMessageProperty. Я понял, как добавлять многозначные записи, такие как «Домашний адрес», но при поиске переполнения стека я придумываю 4 (ТОЛЬКО ЧЕТЫРЕ!) Записи по вопросам, касающимся этого ключа (kABPersonInstantMessageProperty).Сохранение локатора записей в адресной книге пользователя kABPersonInstantMessageProperty field

Часть моего кода для добавления «Домашнего адреса» в запись адресной книги человека ниже, и я признаю, что я понятия не имею, как изменить это на 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); 

Может кто-нибудь помочь? Буду премного благодарен.

+0

Dont вы ненавидите, когда люди downvote вопроса и не говорите Зачем? Я вошел в систему почти через 1 год после того, как мой вопрос был задан (и ответил) сам ... и кто-то ответил на этот вопрос 3 дня назад! Фе! Downvoters должны быть перечислены в комментариях, чтобы мы могли проверить, почему мы это задали. У этого вопроса был код и действительная причина для его запроса. Интересно, какая проблема у кого-нибудь может быть с этим! – Jann

ответ

3

GOT IT!

Это так просто! Благодаря link text, у кого была такая же проблема с отсутствием ответов Google на этот вопрос. Спасибо, Кейси!

record В то время как это запись ABPerson и все 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:@"[email protected]"]; 

     [imDict setObject:iMID forKey:(NSString*)kABPersonInstantMessageUsernameKey]; 
     ABMultiValueAddValueAndLabel(im, imDict, kABHomeLabel, NULL); 
     [imDict release]; 
     ABRecordSetValue(record, kABPersonInstantMessageProperty, im, NULL); 
+0

thx, герой дня! –