【问题标题】:Storing a record locator in the user's Address Book kABPersonInstantMessageProperty field在用户的通讯簿 kABPersonInstantMessageProperty 字段中存储记录定位器
【发布时间】: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


【解决方案1】:

知道了!

这太简单了!感谢link text,他遇到了同样的问题,在这个问题上缺乏谷歌可用的答案。谢谢,凯西!

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:@"RL@MyAppDomain"];

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-08
    • 2013-06-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多