我有一个函数可以收集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
}
答案 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"})