Как отсортировать массив файлового менеджера по дате создания - PullRequest
1 голос
/ 21 апреля 2019

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

Я еще ничего не пробовал, потому что я немного застрял

override func viewDidLoad() {
        super.viewDidLoad()

        csvFiles = listCsvs()

        tblViewDataCSV.dataSource = self
        tblViewDataCSV.delegate = self



    }

    func listCsvs() -> [URL] {
        let fileManager = FileManager.default
        let documentDirectory = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0]

        let files = try? fileManager.contentsOfDirectory(
            at: documentDirectory,
            includingPropertiesForKeys: nil,
            options: [.skipsSubdirectoryDescendants, .skipsHiddenFiles]
            ).filter {
                $0.lastPathComponent.hasSuffix(".csv")
        }

        print(files as Any)

        return files ?? []


    }

Мне нужен массив, отсортированный по .creationdate, а не по алфавиту,Большое спасибо за вашу помощь.

1 Ответ

1 голос
/ 21 апреля 2019

Вам необходимо объявить struct, который имеет URL (или имя файла String) и дату. Заполните массив этой структуры из файлов (и даты их создания), которые вы запрашиваете у FileManager.

Используйте этот массив struct как модель данных для табличного представления. Вы можете отсортировать массив по имени файла или дате (или любым другим атрибутам, которые вы можете добавить в будущем).

Вы можете получить дату создания каждого файла, сначала добавив [.creationDateKey] к параметру includingPropertiesForKeys contentsOfDirectory. Затем получите доступ к дате создания, используя resourceValues на каждом URL. См. Как получить дату создания файла с помощью метода URL resourceValues ​​в Swift 3? для получения дополнительной информации о получении даты создания.

Может помочь использование enumerator метода FileManager вместо contentsOfDirectory. Это облегчит получение нужных атрибутов URL и заполнение массива struct.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...