Удаление элемента из массива путей к изображениям - PullRequest
0 голосов
/ 16 июня 2019

У меня есть функция, которая собирает все файлы .jpg в каталоге Documents и все папки в нем.Затем функция помещает пути к файлам .jpgs в массив.Что мне нужно сделать, это отфильтровать файл defaultImage.jpg из массива.У меня проблема в том, что элементы в массиве являются путями к изображениям jpg, поэтому они не являются строками.Как я могу отфильтровать переменные "theArray" или "files" или "theImagePaths", чтобы удалить defaultImage.jpg?Я попытался получить индекс defaultImage.jpg, но опять же, потому что переменные содержат пути к файлам изображений, которые, кажется, не работают.

Я пробовал - theArray.removeAll (где: {$ 0 == "defaultImage.jpg"}), но я не смог заставить его удалить файл изображения.

static func buildPresentationArray() -> [String]
{
    let theDirectoryPath = ModelData.getDocumentsDirectory()
    let fm = FileManager.default
    var theArray = [String]()

    theArray.removeAll()

    let files = fm.enumerator(at: theDirectoryPath, includingPropertiesForKeys: nil, options: [.skipsHiddenFiles])
    let theImagePaths = files!.filter{ ($0 as AnyObject).pathExtension == "jpg"}

    for theImagePath in theImagePaths
    {
        theArray.append((theImagePath as AnyObject).path)
    }

    return theArray
}

Ответы [ 3 ]

1 голос
/ 16 июня 2019

Попробуйте это:

theArray.removeAll { (image: String) -> Bool in
    return image.contains("defaultImage.jpg")
}
1 голос
/ 16 июня 2019

Вы можете использовать комбинацию filter(_:) и contains(_:), чтобы получить эту работу, т.е.

let filteredArray = theArray.filter({ !$0.contains("defaultImage.jpg") })
0 голосов
/ 16 июня 2019

Из URL получите последний компонент и сравните его с defaultImage.jpg

theArray = [URL]() 
theArray.removeAll(where: {$0.lastPathComponent == "defaultImage.jpg"})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...