我正在用 Objective C 中当前的 CNContact 框架替换我过时的 ABAdressBook 代码。我可以整理其中的大部分内容,除了家乡部分,所以让我们重点关注这一点。 目前我有这个代码:
-(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+ 中已被弃用,因此我使用新的联系人框架获取家乡城市的最接近的是:
-(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 中提取城市名称?
最佳答案
-(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);
}
}
关于objective-c - iOS+9中如何从通讯录框架获取家乡城市?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40218783/