将文件名存储在数组Swift

时间:2015-04-23 16:18:10

标签: arrays swift nsfilemanager

我正在寻找允许我扫描项目中的文件夹的代码,并将所有带有.jpg扩展名的文件名存储在数组中。 这是我必须扫描我的xcode项目的主文件夹的代码,但是如何在数组中存储内部文件的名称?

let filemanager:NSFileManager = NSFileManager()
let files = filemanager.enumeratorAtPath(NSHomeDirectory())
while let file = files?.nextObject() {
    // store all file names with extension (jpg) in array
}

2 个答案:

答案 0 :(得分:2)

let documentsDirectoryURL =  NSFileManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first as! NSURL

let jpgFilesArray = (NSFileManager.defaultManager().contentsOfDirectoryAtURL(documentsDirectoryURL, includingPropertiesForKeys: nil, options: .SkipsHiddenFiles | .SkipsSubdirectoryDescendants | .SkipsPackageDescendants, error: nil) as! [NSURL]).sorted{$0.lastPathComponent<$1.lastPathComponent}.filter{$0.pathExtension!.lowercaseString == "jpg"}

作为只读计算属性

var jpgFilesArray: [NSURL] {
    return (NSFileManager.defaultManager().contentsOfDirectoryAtURL(documentsDirectoryURL, includingPropertiesForKeys: nil, options: .SkipsHiddenFiles | .SkipsSubdirectoryDescendants | .SkipsPackageDescendants, error: nil) as! [NSURL]).sorted{$0.lastPathComponent<$1.lastPathComponent}.filter{$0.pathExtension!.lowercaseString == "jpg"}
}

答案 1 :(得分:0)

这是一个如何运作的例子。此函数返回指定路径中目录及其所有子目录中所有文件URL的数组。

func files(atPath: String) -> [NSURL] {
    var urls : [NSURL] = []
    let dirUrl = NSURL(fileURLWithPath: atPath)
    if dirUrl != nil {
        let fileManager = NSFileManager.defaultManager()
        let enumerator:NSDirectoryEnumerator? = fileManager.enumeratorAtURL(dirUrl!, includingPropertiesForKeys: nil, options: nil, errorHandler: nil)
        while let url = enumerator?.nextObject() as! NSURL? {
            if url.lastPathComponent == ".DS_Store" {
                continue
            }
            urls.append(url)
        }
    }
    return urls
}


let allFiles = files("/a/directory/somewhere")
相关问题