小编Iac*_*ari的帖子

使用Swift的FileManager迭代文件夹及其子文件夹中的文件

我是编程Swift的新手,我正在尝试遍历文件夹中的文件.我在这里看了一下答案并试图将其翻译成Swift语法,但没有成功.

let fileManager = NSFileManager.defaultManager()
let enumerator:NSDirectoryEnumerator = fileManager.enumeratorAtPath(folderPath)

for element in enumerator {
    //do something
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

Type 'NSDirectoryEnumerator' does not conform to protocol 'SequenceType'
Run Code Online (Sandbox Code Playgroud)

我的目的是查看主文件夹中包含的所有子文件夹和文件,找到具有特定扩展名的所有文件,然后对它们执行某些操作.

cocoa nsfilemanager swift

68
推荐指数
9
解决办法
5万
查看次数

Swift:无法将文件复制到新创建的文件夹

我正在Swift中构建一个简单的程序,它应该将具有特定扩展名的文件复制到另一个文件夹中.如果此文件夹存在,程序将只复制它们在文件夹中,如果该文件夹不存在,程序必须先将其复制.

let newMTSFolder = folderPath.stringByAppendingPathComponent("MTS Files")

if (!fileManager.fileExistsAtPath(newMTSFolder)) {
    fileManager.createDirectoryAtPath(newMTSFolder, withIntermediateDirectories: false, attributes: nil, error: nil)
}

while let element = enumerator.nextObject() as? String {
    if element.hasSuffix("MTS") { // checks the extension
        var fullElementPath = folderPath.stringByAppendingPathComponent(element)

        println("copy \(fullElementPath) to \(newMTSFolder)")

        var err: NSError?
        if NSFileManager.defaultManager().copyItemAtPath(fullElementPath, toPath: newMTSFolder, error: &err) {
            println("\(fullElementPath) file added to the folder.")
        } else {
            println("FAILED to add \(fullElementPath) to the folder.")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

运行此代码将正确识别MTS文件,但随后导致"FAILED to add ...",我做错了什么?

nsfilemanager swift

5
推荐指数
1
解决办法
7064
查看次数

带有Swift变量的system()命令

在这里,我遇到了另一个noob问题:我试图在Swift中编写一个非常简单的程序,并且在尝试使用变量从程序中运行shell命令时遇到困难.

一个简单的例子:写作system("say hello").

但是以下代码不起作用:

var whatToSay = "hello world"
system("say \(whatToSay)")
Run Code Online (Sandbox Code Playgroud)

我在构建程序时遇到的错误是: Could not find member 'convertFromStringInterpolatingSegment'

有帮助吗?

objective-c swift xcode6

4
推荐指数
1
解决办法
1988
查看次数

Swift:尝试循环更新NSTextField,但它只会获取最后一个值

我非常简单的程序是遍历数组以导出多个文件。当它处于循环中时,我希望它更新一个文本字段以告诉用户当前正在导出哪个文件。代码如下:

for item in filesArray {
    var fileName = item["fileName"]

    fileNameExportLabel.stringValue = "Exporting \(fileName).ext"
    println("Exporting \(fileName).ext")

    //--code to save the stuff goes here--
}
Run Code Online (Sandbox Code Playgroud)

发生的事情是:println正常工作,为每个文件抛出一条消息,但是被调用的标签fileNameExportLabel仅在导出了最后一个文件时才更新,因此在整个循环中该标签为空白,并且在循环结束时获得了最后一个文件名。

任何的想法?我在这里完全是菜鸟,我想知道NSTextField是否需要更新命令,类似于表视图。

提前致谢!

cocoa for-loop nstextfield swift

2
推荐指数
1
解决办法
2475
查看次数