Почему, несмотря на установку одного и того же кода, разные устройства возвращают разный порядок одного и того же набора с HD - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть два устройства iPhone и Ipad

Когда iPad подключен, массив, в котором эти файлы .png извлекаются из HD и сохраняются, будет содержать файлы в следующем порядке, например, даже если кодвыполняется несколько раз 1, 3, 5, 8,11,25, 66, 2. Это просто имена файлов

Когда iPhone подключен, при запуске кода предоставляется тот же набор изображений на HD,например, массив содержит изображения в следующем порядке;11 5 25 1 2 66 3 8

Пожалуйста, дайте мне знать, почему, несмотря на одинаковый код, оба устройства отличаются в порядке, в котором они применяют извлечение данных с HD.

Ответы [ 2 ]

0 голосов
/ 08 ноября 2019

Пожалуйста, дайте мне знать, почему, несмотря на один и тот же код, оба устройства отличаются в порядке, в котором они применяют извлечение данных с HD.

В документации для contentsOfDirectory указано:

Порядок файлов в возвращаемом массиве не определен.

Как минимум (версия) конкретной файловой системы (HFS +, APFS, FAT) и порядоксоздание элементов может влиять на порядок возвращаемых элементов.

Если вам нужны элементы в согласованном порядке, отсортируйте возвращаемый массив в соответствии с требуемым порядком.

HTH

0 голосов
/ 07 ноября 2019

вы можете отсортировать по любому параметру или имени, а затем отобразить. это будет работать в обоих случаях.

некоторый демонстрационный код

let fm = FileManager.default
let path = Bundle.main.resourcePath!
let items = try! fm.contentsOfDirectory(atPath: path)
var sortItems : [Any]?
for item in items {
    // sort algo
    sortItems.append(item)
}
...