0

連絡先を取得するメソッドを実装しました。

iOS 6 の場合、以下のコードを使用してユーザーから許可を取得しました。

CFErrorRef myError = NULL;
ABAddressBookRef myAddressBook = ABAddressBookCreateWithOptions(NULL, &myError);
ABAddressBookRequestAccessWithCompletion(myAddressBook,^(bool granted, CFErrorRef error)
{
   if(granted)
    {
        [self GetContactInformation];
    }
   else
    {
        UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Contacts" message:@"You didn't permit us to access your contact details." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil];
        [alert show];
        [alert release];
    }
});
CFRelease(myAddressBook);

上記のコードは iOS 6 で正常に動作しますが、iOS 6 未満では以下のエラーが発生します。

ここに画像の説明を入力

4

2 に答える 2

1

MACROSを使用して、これをフィルタリングできます。

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 60000
CFErrorRef myError = NULL;
ABAddressBookRef myAddressBook = ABAddressBookCreateWithOptions(NULL, &myError);
ABAddressBookRequestAccessWithCompletion(myAddressBook,^(bool granted, CFErrorRef error)
{
   if(granted)
    {
        [self GetContactInformation];
    }
   else
    {
        UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Contacts" message:@"You didn't permit us to access your contact details." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil];
        [alert show];
        [alert release];
    }
});
CFRelease(myAddressBook); 
#else
    [self GetContactInformation];
#endif

動作するかどうかお知らせください。

于 2012-11-23T11:59:32.477 に答える
0

さて、あなたはすでに答えを知っているようです。これらの関数は両方とも iOS 6+のみであり、以前の SDK には存在しません。つまり、それらのシンボルは定義されていません。最小公分母にコーディングするか、ターゲットを iOS 6 に上げる必要があります。

于 2012-11-23T10:17:33.207 に答える