从图像路径数组中删除项目

时间:2019-06-16 01:10:32

标签: swift

我有一个函数可以收集Documents目录中的所有.jpg文件以及其中的所有文件夹。然后,该函数将.jpg的文件路径放入数组中。我需要做的是从数组中过滤文件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 个答案:

答案 0 :(得分:1)

尝试一下:

theArray.removeAll { (image: String) -> Bool in
    return image.contains("defaultImage.jpg")
}

答案 1 :(得分:1)

您可以结合使用 filter(_:) contains(_:) 来使该功能正常工作,即

let filteredArray = theArray.filter({ !$0.contains("defaultImage.jpg") })

答案 2 :(得分:0)

URL中获取最后一个组件,并将其与defaultImage.jpg进行比较

theArray = [URL]() 
theArray.removeAll(where: {$0.lastPathComponent == "defaultImage.jpg"})