swift:在另一个文件中调用一个函数

时间:2015-12-31 09:23:20

标签: swift

我想调用驻留在其他文件中的函数。在我给出的示例中,我没有收到语法错误,应用程序运行。当我单击IBAction时,应用程序崩溃。我不知道为什么。我正在使用Xcode 6.4和OS X编码 请指教。

// FileUtilties.swift

import Foundation  
import Cocoa  
class FileUtilities: NSObject, NSAlertDelegate {

    var fileList : String!

    func listFilesFromDocumentsFolder() -> [String]
    {
        var theError = NSErrorPointer()
        let dirs = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.AllDomainsMask, true) as? [String]
        if dirs != nil {
            let dir = dirs![0]
            let fileList = NSFileManager.defaultManager().contentsOfDirectoryAtPath(dir, error: theError)
            return fileList as! [String]   // edit: added ! for Swift 1.2 compatibitily
        }
        else{
            let fileList : String!
        }
        return [fileList]
    }

    // Alert popup Window
    func IdialogOKCancel(myQuestion: String, myText: String) -> Bool {
        let myPopup: NSAlert = NSAlert()
        myPopup.messageText = myQuestion
        myPopup.informativeText = myText
        myPopup.alertStyle = NSAlertStyle.WarningAlertStyle
        myPopup.addButtonWithTitle("OK")
        myPopup.addButtonWithTitle("Cancel")

        let res = myPopup.runModal()
        if res == NSAlertFirstButtonReturn {
            return true
        }
    return false
    }
}

// ViewController.swift

import Cocoa

class ViewController: NSViewController, NSTableViewDataSource, NSTableViewDelegate {

    // setsup outlet to add data to ListViewer
    @IBOutlet weak var ListViewer: NSScrollView!

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.

    }

    override var representedObject: AnyObject? {
        didSet {
        // Update the view, if already loaded.
        }
    }

    @IBAction func AddButtonClicked(sender: AnyObject) {
        var rtnText: String = "this is the text "
        var rtn: Bool = false
        let instance = FileUtilities()
        rtn = instance.IdialogOKCancel("Ok?", myText: rtnText)
        }
}

0 个答案:

没有答案