首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在iOS +9中从联系人框架中获取家乡城市?

如何在iOS +9中从联系人框架中获取家乡城市?
EN

Stack Overflow用户
提问于 2016-10-24 20:43:55
回答 2查看 520关注 0票数 2

在Objective C中,我正在用当前的ABAdressBook框架替换我过时的CNContact代码。我可以整理出大部分代码,除了Home City部分,所以让我们把重点放在这里。目前我有这样的代码:

代码语言:javascript
复制
    -(NSArray *)getLandAddressesForContactIOS6:(ABRecordRef)recordRef {

        ABMultiValueRef addresses = ABRecordCopyValue(recordRef, kABPersonAddressProperty);
        NSMutableArray *formattedAddressesResponse = [NSMutableArray array];

        for(CFIndex i = 0; i < ABMultiValueGetCount(addresses); i++) {

            NSString *label = (__bridge NSString *)ABAddressBookCopyLocalizedLabel(ABMultiValueCopyLabelAtIndex(addresses, i));
            NSDictionary *addressComponents = (__bridge NSDictionary*)ABMultiValueCopyValueAtIndex(addresses, i);

            NSString *street = [addressComponents objectForKey:(NSString *)kABPersonAddressStreetKey];
            NSString *city = [addressComponents objectForKey:(NSString *)kABPersonAddressCityKey];            
            NSString *formattedAddress = ABCreateStringWithAddressDictionary(addressComponents, YES);

            NSMutableDictionary *currentAddressResponse = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                                           label, @"type",
                                                           label, @"label",
                                                           nil];
            if (street != nil) {
                [currentAddressResponse setObject:street forKey:@"street"];
            }
            if (city != nil) {
                [currentAddressResponse setObject:city forKey:@"city"];
            }
            if (formattedAddress != nil) {
                [currentAddressResponse setObject:formattedAddress forKey:@"formattedAddress"];
            }

            [formattedAddressesResponse addObject:currentAddressResponse];
        }

        return formattedAddressesResponse;
    }

对于iOS 9+,该代码已被弃用,因此我要使用新的联系人框架获得家乡城市的最接近信息是:

代码语言:javascript
复制
-(NSArray *)getLandAddressesForContactIOS10:(CNContact*)recordRef {
    NSArray <CNLabeledValue<CNPostalAddress *> *> *addresses = recordRef.postalAddresses;

    NSMutableArray *formattedAdressResponse = [NSMutableArray array];
    for(CFIndex i = 0; i < addresses.count; i++) {
        CNLabeledValue *addressi = [addresses objectAtIndex:i];
        //NSString *city = addressi.??????; //Stuck here, don't know what else to do

如何从CNContact中提取城市名称??

EN

回答 2

Stack Overflow用户

发布于 2016-12-15 17:50:26

代码语言:javascript
复制
-(void )getLandAddressesForContactIOS10:(CNContact*)contact
{
    for (CNLabeledValue<CNPostalAddress*>* labeledValue in contact.postalAddresses)
    {

            NSLog(@"%@",labeledValue.value.city);

            NSLog(@"%@",labeledValue.value.street);

            NSLog(@"%@",labeledValue.value.state);

            NSLog(@"%@",labeledValue.value.postalCode);

            NSLog(@"%@",labeledValue.value.ISOCountryCode);

    }
}
票数 1
EN

Stack Overflow用户

发布于 2018-11-15 17:43:27

代码语言:javascript
复制
NSArray *addresses = (NSArray*)[contact.postalAddresses valueForKey:@"value"];

        if (!(addresses == nil) && addresses.count > 0)
        {
            for (CNLabeledValue<CNPostalAddress*>* labeledValue in contact.postalAddresses)
            {      
                NSString *city = labeledValue.value.city;
                NSLog(@"City = %@",city);

                NSString *street = labeledValue.value.street;
                NSLog(@"Street = %@",street);

                NSString *state = labeledValue.value.state;
                NSLog(@"State = %@",state);

                NSString *postalCode = labeledValue.value.postalCode;
                NSLog(@"PostalCode = %@",postalCode);

                NSString *ISOCountryCode = labeledValue.value.ISOCountryCode;
                NSLog(@"ISOCountryCode = %@",ISOCountryCode);   
            }
        }
        else
        {
            NSLog(@"No addresses for name = %@",strname);
        }            
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40218783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档