【问题标题】:Can I save files/folders in NSSearchPathDirectory.ApplicationDirectory? NSSearchPathDirectory.DocumentDirectory is not ideal for me我可以在 NSSearchPathDirectory.ApplicationDirectory 中保存文件/文件夹吗? NSSearchPathDirectory.DocumentDirectory 不适合我
【发布时间】:2015-11-02 05:45:54
【问题描述】:

iOS 8.4 |斯威夫特 2.1

当我尝试在NSSearchPathDirectory.ApplicationDirectory 中创建一个新文件夹时,我在设备上出现了这个错误(但在模拟器中它确实有效):

代码:

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")
     }
 }

错误

2015-11-02 10:53:21.114 Elmo[218:5055] 你没有权限 将文件“imagegallery”保存在“Applications”文件夹中。致命错误: '尝试!'表达式意外引发错误:错误 Domain=NSCocoaErrorDomain Code=4 "文件“imagegallery”没有 存在。” 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 {错误域=NSPOSIXErrorDomain 代码=2 "没有这样的文件或目录"}}: 文件 /Library/Caches/com.apple.xbs/Sources/swiftlang/swiftlang-700.0.59/src/swift/stdlib/public/core/ErrorType.swift, 第 50 行

但是,使用 NSSearchPathDirectory.DocumentDirectory 确实对我有用并且可以按预期工作。但在我的应用程序中,我具有通过 iTunes 共享/导入的功能,因此我的 info.plist 中的“应用程序支持 iTunes 文件共享”为 TRUE - 这暴露了NSSearchPathDirectory.DocumentDirectory 在 iTunes 中。我不希望通过我的应用程序保存的文件/文件夹在 iTunes 中暴露给用户。那我应该把文件/文件夹保存在哪里,却可以通过暴露NSSearchPathDirectory.DocumentDirectory来通过iTunes使用文件共享?

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    我发现这篇文章的答案很有帮助: Path directory usable in iOS

    据我所知,只有这些在 iOS 上可用:

    NSDocumentDirectoryDocuments/(持久的,备份的,可能 在 iTunes 中可见)NSLibraryDirectoryLibrary/
    (持久,备份,对用户不可见)NSCachesDirectoryLibrary/Caches/(未备份,可能被系统清除)

    现在,在我使用 NSSearchPathDirectory.LibraryDirectory 之后,我在设备上没有出现 NSFileManager 错误,我在 NSSearchPathDirectory.LibraryDirectory 中存储的目录/文件也不会在 iTunes 共享选项卡中向用户公开。

    太棒了!

    【讨论】:

      猜你喜欢
      • 2013-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-03
      • 2010-10-05
      相关资源
      最近更新 更多