The problem is (I presume from your description) that your app is sandboxed, which means you can't just access any file you want. For files in arbitrary places, you can only access them when the user gives your app "permission" via a NSOpenPanel or a NSSavePanel.
To begin with, you should stop using all APIs based on paths, and use only URL-based APIs. That's because the "permission" given to you by the user is associated with the URLs that you get after the NSOpenPanel or NSSavePanel returns a result.
Those URLs are called "security scoped", which means they enable access to the files they point to. This security scoping lasts only as long as your app is running. If you need to access the files again after your app relaunches, you must save "security scoped bookmarks", which you create from security scoped URLs. You can store these bookmarks somewhere, then resolve them when your app relaunches (or, in your case, perhaps when they're chosen from the table view).
Information about creating security scoped bookmarks is in the documentation page for URLs:
(Look for the "Creating Bookmarks" section.) Once you've resolved a bookmark into a security scoped bookmark, you can re-activate the scoping with this:
Keep in mind that you don't have to do any resolution or start accessing during the original execution where you get the URLs, only when relaunched.
Also — very important — do not try to create a new security scoped bookmark from a reconstituted URL. You can only create the bookmark successfully from the original URL. So, save the bookmark once, then reconstitute multiple times.
Thanks a lot. This soved my problem.