Выбор адреса адресной книги с помощью ios5 с ARC - PullRequest
1 голос
/ 16 декабря 2011

Будучи довольно новым для target-c и разрабатывая для ios, я пытаюсь выяснить, как реализовать код адресной книги из Address Book Programming Guide for iOS.

Я хочу иметь возможностьвойти в адресную книгу, по которой щелкнул пользователь.

Мне удалось реализовать адресную книгу в моем приложении.

В ios4 следующие «работы»:

- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker 
      shouldContinueAfterSelectingPerson:(ABRecordRef)person  
                                property:(ABPropertyID)property 
                              identifier:(ABMultiValueIdentifier)identifier
{
    if (property == kABPersonAddressProperty)  // if tapped is equal to a phone property
    {
        NSLog(@"Address tapped!");
        NSMutableDictionary * cfaddress;
        ABMultiValueRef address = ABRecordCopyValue(person, kABPersonAddressProperty); 
        for(CFIndex i = 0; i < ABMultiValueGetCount(address); i++) {
            if(identifier == ABMultiValueGetIdentifierAtIndex (address, i)) { //if tapped number identifier is the same as identifier number tapped
                cfaddress = ABMultiValueCopyValueAtIndex(address, i); // copy the number to CFSTRING number
            }
        }        

        NSLog(@"%@", [cfaddress objectForKey:@"City"]);    
        NSLog(@"%@", [cfaddress objectForKey:@"Street"]);

        // City and street present ?

        if([cfaddress objectForKey:@"City"] && [cfaddress objectForKey:@"Street"]){
            NSLog(@"STAD EN STRAAT");
        }
        else{
            NSLog(@"GEEN STAD EN/OF STRAAT");
        }
    }

    [self dismissModalViewControllerAnimated:YES];
    return YES;
}

К сожалению, в ios5 с автоматическим подсчетом ссылок это выдает мне следующую ошибку:

ошибка: автоматический подсчет ссылок Проблема: неявное преобразование типа указателя без Objective-C 'CFTypeRef' (aka 'const void* ') to' NSMutableDictionary * 'запрещен с ARC

Я предполагаю, что мой способ сделать это (для ios4) в любом случае не был хорошим способом, и я был бы очень признателен за некоторые предложения о том, какдля достижения этой цели.Заранее спасибо!

1 Ответ

2 голосов
/ 16 декабря 2011

переделать это

cfaddress = ABMultiValueCopyValueAtIndex(address, i);

с этим

cfaddress = [NSMutableDictionary dictionaryWithDictionary:(NSDictionary *)ABMultiValueCopyValueAtIndex(address, i)];
...