Опция skipsPackageDescendants
предназначена для предотвращения глубокого обхода каталога от до пакетов.Флаг не означает «игнорировать все пакеты».На самом деле это означает «не перечислять содержимое внутри пакета».
contentsOfDirectory()
не выполняет глубокого обхода каталога, поэтому опция в этом контексте не имеет смысла.Метод enumerator(at:...)
соблюдает этот флаг, не перечисляя файлы внутри пакета .app
;он по-прежнему будет перечислять сам .app
.
Если вы не заинтересованы в определенных типах файлов, вы должны использовать
let urls = try FileManager.default.contentsOfDirectory(
at: url,
includingPropertiesForKeys: [.isDirectoryKey],
options: [.skipsHiddenFiles]
).filter { $0.pathExtension != "app" }