【问题标题】:swift iterating webfolder for putting filenames in a array快速迭代网络文件夹以将文件名放入数组中
【发布时间】:2015-08-11 13:08:17
【问题描述】:

我想将网络文件夹“mywwwaddress”的文件名放入一个数组中 但是 println 给了我一个空数组: []

func files(){
    var urls : [NSURL] = []
    let dirUrl = NSURL(string: "mywwwadres")

    let fileManager = NSFileManager.defaultManager()
    let enumerator:NSDirectoryEnumerator? = fileManager.enumeratorAtURL(dirUrl!, includingPropertiesForKeys: nil, options: nil, errorHandler: nil)

    while let url = enumerator?.nextObject() as! NSURL? {
        urls.append(url)
    }

    println(urls)
}

【问题讨论】:

  • 在您的问题中,该目录名为“mywwwaddress”,而在您的代码中,您使用的是“mywwwadres”(单个ds)。您是否仔细检查了目录名称的拼写是否正确?
  • 谢谢你,Frank,这是另一个我不会在这个论坛上显示的地址

标签: arrays swift loops


【解决方案1】:

当我使用本地文件系统上目录的 URL 尝试您的代码时,它对我来说可以正常工作,因此您可能需要进行更多错误处理,以查看到达您正在使用的 URL 是否存在问题。

另外,由于NSEnumerator符合SequenceType,你可以在其上使用for...in或其他序列处理操作,如map,这样可以稍微简化代码。

这里有一个可以尝试更多错误处理的版本:

func files() {

    let fileManager = NSFileManager.defaultManager()

    let url = NSURL(string: "mywwwadres")
    assert(url != nil, "Invalid URL")

    let enumerator = url.flatMap { fileManager.enumeratorAtURL($0,
                        includingPropertiesForKeys: nil,
                        options: nil)
        { url, error in
            println("error with url \(url): \(error)")
            return true  // true to keep going
        }
    }
    assert(enumerator != nil, "Failed to create enumerator")

    let urls = enumerator.map { enumerator in
        map(enumerator) { url in
            url as! NSURL
        }
    }

    println(urls ?? [])
}

【讨论】:

  • at url: "ios.xxx.nl/img" 我收到错误消息:错误与 url nil: Error Domain=NSCocoaErrorDomain Code=260 “操作无法完成。(Cocoa 错误 260。)” UserInfo=0x7fd243e34a30 {NSURL=ios.xxxx.nl/img, NSFilePath=/img, NSUnderlyingError=0x7fd243e34990 "操作无法完成。没有这样的文件或目录"} []
  • 正确,所以您的网址是错误的。尝试在网络浏览器中访问它。
  • 在 de webbrowser II 中无法打开“ios.xxx.nl/img”并获得 403 禁止访问被拒绝,但我可以在“ios.xxx.nl/img/”打开图像flower.jpg" 我想枚举文件夹以读取 web 文件夹中的图像的原因是 swift 代码有另一种方法吗?
  • 可能不是 - 这不是一个真正的快速问题,恐怕网络服务器基本上没有授予您获取目录列表的权限
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-28
  • 2021-02-20
  • 2013-07-11
  • 2021-02-17
  • 1970-01-01
  • 2021-01-09
  • 1970-01-01
相关资源
最近更新 更多