ios - 没有在 Swift 的 applicationSupport 文件夹中创建文本文件
问题描述
我正在尝试在文本文件中输入一个字符串,但函数 createFile(path:contents:attributes) 返回 false 表示该文件没有被创建。我厌倦了在应用程序支持目录中创建,但即使我尝试使用 documentDirecorty,我也会得到相同的结果,表明文件没有被创建。不知道我做错了什么。
let filePin = "userPass.txt"
let _string = "password"
let encrypted = _string.toHexString()
let fileMngr = FileManager.default
let path = fileMngr.urls(for: FileManager.SearchPathDirectory.applicationSupportDirectory, in: FileManager.SearchPathDomainMask.userDomainMask).last?.appendingPathComponent(self.filePin)
if let data = encrypted.data(using: String.Encoding.utf8) {
if fileMngr.createFile(atPath: (path?.absoluteString)!, contents: data, attributes: nil){
print("The file was created")
}
else {
print("File was not created")
}
}
应该得到“文件已创建”,而是得到“文件未创建”
解决方案
除了错误的 API 之外absoluteString
,应用程序支持文件夹可能不存在。
这个比较靠谱
let string = "password"
let encrypted = string.toHexString()
let fileManager = FileManager.default
do {
let applicationSupportDirectory = try fileManager.url(for: .applicationSupportDirectory, in: .userDomainMask, appropriateFor: nil, create: true)
let fileUrl = applicationSupportDirectory.appendingPathComponent(self.filePin)
let data = Data(encrypted.utf8)
try data.write(to: fileUrl)
print("The file was created")
} catch {
print(error, "File was not created")
}
推荐阅读
- python - 从多个数据帧中提取数据
- asterisk - 没有应用程序“AGI”进行扩展
- angular - Auth Guard 即使在登录后也无法正常工作,总是重定向到登录页面
- unity3d - 我将如何在另一个游戏对象顶部的某个地方获得一个随机位置的 vector3?
- java - java.sql.SQLException:字段“otherMenuItems_id”没有默认值
- c - 如何修复 Linux 系统调用中的分段错误?
- algorithm - 是否有一种快速算法来确定充满变量的矩阵的行列式?
- python - 如何使用 Python 捕获发送到 Web 浏览器的 JSON
- python-3.x - PycURL unsetopt 用于 WRITEFUNCTION
- python - Python Pandas 通过将值连接到列名来组合 2 个数据框