【发布时间】: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使用文件共享?
【问题讨论】: