How to detect if a NSURL can be accessed on a Sandboxed app?
appstore-sandbox, entitlements, nsopenpanel, nsurl, objective-c
Solution
The recommended method is to obtain the path from the URL, convert to a C string, and then call `access` (documented in section 2 of man) to check for the permission you require. E.g., in outline to check for read access:
#include <unistd.h>
if (access([[url path] UTF8String], R_OK) == 0)
{
// have access rights to read
}
Problem
I'm writing an OS X application that has an open panel with a preview accessory view. The problem is that when I select a file that is not on a folder with sandbox permissions I cannot preview it. Is there any way to tell if a file can would be restricted by the sandbox permissions before trying to open it? I already tried `- (BOOL)checkResourceIsReachableAndReturnError:(NSError **)error ` of the `NSURL` class but it returns true even when the file is protected.