正在将文件 url 从 documentDirectory 加载到 table 视图
loading file url from documentDirectory to table view
我一直在尝试加载文档目录中的文件以显示在 uitable 视图中并使用 quickview
阅读它们
var fileURLs: [NSURL] = []
每次我 运行 应用程序都会在此行出错,如 "index out of range" on fileURLs[indexPath.row]
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if QLPreviewController.canPreview(fileURLs[indexPath.row]) {
quickLookController.currentPreviewItemIndex = indexPath.row
navigationController?.pushViewController(quickLookController, animated: true)
}
}
fileURLs 数组正在通过以下方法附加
private func prepareFileURLS() {
let fileManager = FileManager.default
let path = fileManager.urls(for: .documentDirectory, in: .userDomainMask).last! as NSURL
let fileName = String(describing: path.lastPathComponent)
let pathString = String(describing: path.absoluteURL)
fileNames.append(fileName)
if FileManager.default.fileExists(atPath: pathString) {
fileURLs.append(path as NSURL)
print(fileURLs)
}
}
每次检查结果都是一个空数组,return只有文档路径而不是文件路径本身
[]
Optional(file:///Users/N/Library/Developer/CoreSimulator/Devices/EC72CD97-87F4-478E-967C-6BA135B2EC6C/data/Containers/Data/Application/0778931B-77DD-4CE8-92BF-E9A8002F901D/Documents/)
当我手动检查文件夹时,它们是其中的一个文件。
有人知道上面的代码有什么问题吗?
添加了 ** table 上的文件显示非常好,因为它从模型文件加载名称和其他数据,但无法查看
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
//tableView.reloadData()
return csvFiles.count
}
这里是数据模型
class CSVData {
// MARK: Properties
var name: String
var descriptions: String
var photo: UIImage?
var url: NSURL
// MARK: Init
init?(name: String, descriptions: String?, photo: UIImage?, url: NSURL){
// init should fail if there is no name
if name.isEmpty {
return nil
}
self.name = name
self.descriptions = descriptions ?? ""
self.photo = photo
self.url = url
}
}
fileManager.urls returns 域中的目录数组,而不是该目录中的文件数组。要获取文件路径,您应该使用 FileManager 的 contentsOfDirectory。参见
我一直在尝试加载文档目录中的文件以显示在 uitable 视图中并使用 quickview
阅读它们var fileURLs: [NSURL] = []
每次我 运行 应用程序都会在此行出错,如 "index out of range" on fileURLs[indexPath.row]
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if QLPreviewController.canPreview(fileURLs[indexPath.row]) {
quickLookController.currentPreviewItemIndex = indexPath.row
navigationController?.pushViewController(quickLookController, animated: true)
}
}
fileURLs 数组正在通过以下方法附加
private func prepareFileURLS() {
let fileManager = FileManager.default
let path = fileManager.urls(for: .documentDirectory, in: .userDomainMask).last! as NSURL
let fileName = String(describing: path.lastPathComponent)
let pathString = String(describing: path.absoluteURL)
fileNames.append(fileName)
if FileManager.default.fileExists(atPath: pathString) {
fileURLs.append(path as NSURL)
print(fileURLs)
}
}
每次检查结果都是一个空数组,return只有文档路径而不是文件路径本身
[]
Optional(file:///Users/N/Library/Developer/CoreSimulator/Devices/EC72CD97-87F4-478E-967C-6BA135B2EC6C/data/Containers/Data/Application/0778931B-77DD-4CE8-92BF-E9A8002F901D/Documents/)
当我手动检查文件夹时,它们是其中的一个文件。 有人知道上面的代码有什么问题吗?
添加了 ** table 上的文件显示非常好,因为它从模型文件加载名称和其他数据,但无法查看
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
//tableView.reloadData()
return csvFiles.count
}
这里是数据模型
class CSVData {
// MARK: Properties
var name: String
var descriptions: String
var photo: UIImage?
var url: NSURL
// MARK: Init
init?(name: String, descriptions: String?, photo: UIImage?, url: NSURL){
// init should fail if there is no name
if name.isEmpty {
return nil
}
self.name = name
self.descriptions = descriptions ?? ""
self.photo = photo
self.url = url
}
}
fileManager.urls returns 域中的目录数组,而不是该目录中的文件数组。要获取文件路径,您应该使用 FileManager 的 contentsOfDirectory。参见