Загрузка файла url из documentDirectory в табличное представление

Я пытался загрузить файл в каталог документов, чтобы показать на uitableview и прочитать их с помощью QuickView

var fileURLs: [NSURL] = []

каждый раз, когда я запускаю приложения, в этой строке выдается ошибка как "индекс вне диапазона" в 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)
    }
}

и результат каждый раз - пустой массив, когда я проверяю его и возвращаю только путь к документу, а не сам путь к файлу

[]
Optional(file:///Users/N/Library/Developer/CoreSimulator/Devices/EC72CD97-87F4-478E-967C-6BA135B2EC6C/data/Containers/Data/Application/0778931B-77DD-4CE8-92BF-E9A8002F901D/Documents/)

когда я вручную проверил папку, это файл там. Кто-нибудь знает, что не так с кодом выше?

добавил ** файл в таблице показывает отлично, так как он загружает имя и другие данные из файла модели, за исключением того, что он не может быть просмотрен

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
}

}

1 ответ

Решение

fileManager.urls возвращает массив каталогов в домене, а не массив файлов в этом каталоге. Чтобы получить пути к файлам, вы должны использовать contentsOfDirectory из FileManager. См. /questions/13433423/poluchenie-spiska-fajlov-v-papke-dokumentov/13433429#13433429

Другие вопросы по тегам