Arrays 用于将文件名放入数组的快速迭代webfolder
我想将web文件夹“mywwwaddress”的文件名放入数组中 但是println给了我一个空数组:[]Arrays 用于将文件名放入数组的快速迭代webfolder,arrays,swift,loops,Arrays,Swift,Loops,我想将web文件夹“mywwwaddress”的文件名放入数组中 但是println给了我一个空数组:[] func files(){ var urls : [NSURL] = [] let dirUrl = NSURL(string: "mywwwadres") let fileManager = NSFileManager.defaultManager() let enumerator:NSDirectoryEnumerator? = fileManager
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)
}
当我在本地文件系统上用一个目录的URL尝试你的代码时,它对我来说工作正常,所以你可能想做更多的错误处理,看看到达你正在使用的URL是否有问题 此外,由于
nsemulator
符合SequenceType
,因此可以在中使用for…或在其上使用其他序列处理操作,如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 ?? [])
}
在url:“我收到错误消息:error with url nil:error Domain=NSCOCAERRORDOMIN Code=260”操作无法完成。(Cocoa错误260。)“UserInfo=0x7fd243e34a30{NSURL=,NSFilePath=,NSFilePath=/img,NSUnderlyingError=0x7fd243e34990”操作无法完成。没有这样的文件或目录“}[]正确,因此您的url不正确。尝试在web浏览器中访问。在de webbrowser II中,无法打开“ios.xxx.nl/img”并获得403禁止访问被拒绝,但我可以在“ios.xxx.nl/img/flower.jpg”打开一个图像,我想枚举文件夹以读取web文件夹中的图像的原因是有其他方法使用swift代码吗?可能不是-这不是真正的swift问题,基本上,web服务器没有授予您获取目录列表的权限。我很抱歉,在您的问题中,目录名为“mywwwaddress”,而在您的代码中,您使用的是“mywwwadres”(单个d
和s
)。你有没有仔细检查一下你的目录名拼写是否正确?谢谢你,弗兰克,这是另一个我不会在这个论坛上显示的地址