Reputation: 1076
iOS 8.4 | Swift 2.1
When I was tried to create a new folder in NSSearchPathDirectory.ApplicationDirectory
, I followed with this error on device (in simulator it did worked, though):
code:
let docuPath:NSURL = NSURL(fileURLWithPath: NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.ApplicationDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0])
ConstantsVO.imagePath = docuPath.URLByAppendingPathComponent("imagegallery")
if !NSFileManager.defaultManager().fileExistsAtPath(ConstantsVO.imagePath.path!)
{
do
{
try NSFileManager.defaultManager().createDirectoryAtPath(ConstantsVO.imagePath.path!, withIntermediateDirectories: true, attributes: nil)
}
catch let error as NSError
{
NSLog("\(error.localizedDescription)")
}
catch
{
print("general error - \(error)", terminator: "\n")
}
}
error
2015-11-02 10:53:21.114 Elmo[218:5055] You don’t have permission to save the file “imagegallery” in the folder “Applications”. fatal error: 'try!' expression unexpectedly raised an error: Error Domain=NSCocoaErrorDomain Code=4 "The file “imagegallery” doesn’t exist." UserInfo={NSURL=file:///var/mobile/Containers/Data/Application/48D90635-0D66-44C2-81CE-F67BAFDA819A/Applications/imagegallery, NSFilePath=/var/mobile/Containers/Data/Application/48D90635-0D66-44C2-81CE-F67BAFDA819A/Applications/imagegallery, NSUnderlyingError=0x16e7d540 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}}: file /Library/Caches/com.apple.xbs/Sources/swiftlang/swiftlang-700.0.59/src/swift/stdlib/public/core/ErrorType.swift, line 50
However, using NSSearchPathDirectory.DocumentDirectory
did worked for me and worked expectedly. But in my application, I've feature to share/import through iTunes, so I have the "Application supports iTunes file sharing" TRUE in my info.plist
- this exposed NSSearchPathDirectory.DocumentDirectory
in iTunes. I don't want the files/folders that I'm saving through my app to be expose to the user in iTunes. Then where should I save the files/folders yet can able to use file sharing through iTunes by exposing NSSearchPathDirectory.DocumentDirectory
?
Upvotes: 0
Views: 1595
Reputation: 1076
I found the answer from this post is helpful: Path directory usable in iOS
As far as I know only these are usable on iOS:
NSDocumentDirectory
isDocuments
/ (persistent, backed up, may be visible in iTunes)NSLibraryDirectory
isLibrary
/
(persistent, backed up, not visibe to the user)NSCachesDirectory
isLibrary/Caches/
(not backed up, may be cleared by system)
Now after I'm using NSSearchPathDirectory.LibraryDirectory
the I'm having no NSFileManager
error on device nor the directories/files I'm storing inside NSSearchPathDirectory.LibraryDirectory
are exposed to the users in iTunes sharing tab.
Great!
Upvotes: 1