PDA

View Full Version : RemoveFileAtPath alternative




boyplunder
Dec 9, 2009, 09:29 AM
A few days after submitting our latest app for review, we had an email back saying that it wouldn't be approved because it uses a private API. The message states:

The non-public API that is included in your application is removeFileAtPath:handler:.

Interestingly, this is used in an app we've had on the store since August, and we had an email on that too, as they have only just noticed it. So, does anyone have an alternative for this? It is used to remove the existing database so the latest read only database is used instead.

Here is the part it appears in:
- (void)checkAndCreateDatabase {
// Check if the SQL database has already been saved to the users phone, if not then copy it over
BOOL success;

// Create a FileManager object, we will use this to check the status
// of the database and to copy it over if required
NSFileManager *fileManager = [NSFileManager defaultManager];

//Delete the current database so it is updated each time.
//Solves db updates without leaving copies.
[fileManager removeFileAtPath:databasePath handler:nil];

// Check if the database has already been created in the users filesystem
success = [fileManager fileExistsAtPath:databasePath];

// If the database already exists then return without doing anything
if (success) return;

// If not then proceed to copy the database from the application to the users filesystem

// Get the path to the database in the application package
NSString *databasePathFromApp = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:databaseName];

// Copy the database from the package to the users filesystem
[fileManager copyItemAtPath:databasePathFromApp toPath:databasePath error:nil];



robbieduncan
Dec 9, 2009, 09:37 AM
Did you even open the documentation?

How about removeItemAtPath:error: (http://developer.apple.com/iphone/library/documentation/Cocoa/Reference/Foundation/Classes/NSFileManager_Class/Reference/Reference.html#//apple_ref/occ/instm/NSFileManager/removeItemAtPath:error:)?

dejo
Dec 9, 2009, 09:46 AM
Try using removeItemAtPath:error: instead. That's published.

Interestingly, this is used in an app we've had on the store since August, and we had an email on that too, as they have only just noticed it.
Yeah, seems they have a new tool to check for unpublished API calls. They have been cracking down on them lately.

boyplunder
Dec 9, 2009, 11:41 AM
Thanks Dejo, that works a treat.

It's been a long learning curve and I don't recall how I arrived at the removeFileAtPath:handler wording, but I have read the section throughout, slapped my wrist and will move on for the better.