I don’t think there is a way to check, but apparently if you request the sharedAddressBook it will return Nil if you don’t have access, otherwise you will get the sharedAddressBook…
If I do that, MacOS comes with a dialog ‘The application wants to access your contacts’ every time one presses ‘Cancel’. Some people do, you know.
So, to prevent this, I was thinking about a pre-check and pop-up my own dialog and set a preference in my app.
Now that I think about it, I can do the same when I don’t get access. Pop-up a dialog after the user presses ‘Cancel’ and store this in a pref-setting. Although I like the pre-check more.