【问题标题】:Storing file names in an array Swift将文件名存储在数组 Swift 中
【发布时间】:2015-04-23 16:18:10
【问题描述】:

我正在寻找允许我扫描项目中的文件夹并将所有扩展名为 .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
}

【问题讨论】:

标签: arrays swift nsfilemanager


【解决方案1】:
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"}
}

【讨论】:

    【解决方案2】:

    这是一个如何工作的例子。此函数从给定路径返回目录及其所有子目录中所有文件 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")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-15
      • 2013-03-03
      • 1970-01-01
      • 2010-12-02
      • 1970-01-01
      • 2020-07-16
      相关资源
      最近更新 更多