swiftsqlitefile-sharingnsdocumentdirectorynslibrarydirectory

How to hide SQLite db files so they are not seen in iTunes file sharing


I have file sharing enabled on my app and so, when you view the documents folder in iTunes, there are the Core Data sqlite files siting there just waiting to be fiddled with by the user.

I have found a few discussions on this but, surprisingly, no one seems to address the concerns I have.

Some say to 'move' them to the library folder - in a custom sub-directory, and another says just rename the files prefixing each with a period.

Both options sound lovely, but these are essential OS files! So my first question is, if you do either of these things (with NSFileManager.defaultManager() - I presume), will the app just automatically find them afterwards? ...or is there a specific 'way' in which you do (either of) them ...so that the app finds them afterward?

Any responses, if you could demonstrate using Swift rather than Objective C, that would be appreciated! Thanks, :)


Solution

  • Figured it out: To anyone wondering the same thing (which I have seen many doing),

    In my app delegate > in the 'persistentStoreCoordinator' lazy variable, I changed the following line of code:

    let url = self.applicationDocumentsDirectory.URLByAppendingPathComponent("MyAppName.sqlite")
    

    to the following two lines of code:

    let library = NSFileManager.defaultManager().URLsForDirectory(.LibraryDirectory, inDomains: .UserDomainMask)[0] as NSURL
    let url = libary.URLByAppendingPathComponent("MyAppName.sqlite")