ios - 将文件保存在swift 3的文档目录中?

标签 ios swift nsfilemanager nsdocumentdirectory

我使用以下代码将文件保存在 swift 3 的文档目录中:

fileManager = FileManager.default
// let documentDirectory = fileManager?.urls(for: .documentDirectory, in: .userDomainMask).first as String
var path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as String
path = path + name

let image = #imageLiteral(resourceName: "Notifications")
let imageData = UIImageJPEGRepresentation(image, 0.5)
let bool = fileManager?.createFile(atPath: path, contents: imageData, attributes: nil)

print("bool is \(bool)")
return true

但如您所见,我没有使用 filemanager 获取文档目录路径,因为 filemanager 只提供 URL 而不是字符串。

问题:

  • 如何从文件管理器中获取字符串?
  • 我的代码有可能崩溃吗?

最佳答案

请反过来想。

URL 是处理文件路径的推荐方式,因为它包含所有用于添加和删除路径组件和扩展的便捷方法——而不是 String,Apple 已经删除了这些方法来自。

不鼓励像 path = path + name 那样连接路径。它很容易出错,因为您要对所有斜杠路径分隔符负责。

此外,您不需要使用 FileManager 创建文件。 Data 有一个将数据写入磁盘的方法。

let fileManager = FileManager.default
do {
    let documentDirectory = try fileManager.url(for: .documentDirectory, in: .userDomainMask, appropriateFor:nil, create:false)
    let fileURL = documentDirectory.appendingPathComponent(name)
    let image = #imageLiteral(resourceName: "Notifications")
    if let imageData = image.jpegData(compressionQuality: 0.5) {
        try imageData.write(to: fileURL)
        return true
    }
} catch {
    print(error)
}
return false

关于ios - 将文件保存在swift 3的文档目录中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44646186/

相关文章:

ios - 如何在IOS中播放正在下载的视频文件

ios - iOS 有像 JUNG 这样的可视化框架吗?

javascript - Nativescript - cocoapod/Google 转化跟踪

objective-c - 有没有办法在 Cocoa 中获取文件夹创建日期?

ios - 核心数据与 NSFileManager

cocoa - 在 Cocoa 中搜索目录及其子目录中的所有目录/文件

ios - 如何在我的 flutter 应用程序中添加连续移动的背景?

swift - 如何修复 "could not find ' init(域:code:userInfo: )' in parent class" while archiving?

ios - 使用 NSCoder 解码时崩溃

ios - Swift/如何填充 UITableViewCells