首页 文章

如何将NSDictionary传递给函数并在Swift 2中返回另一个NSDictionary

提问于
浏览
0

我试图将 businesses (一个NSDictionary)传递给一个迭代它的函数,并将一个选定的业务(也是一个NSDictionary)返回给视图控制器 . 我认为我正在我的函数中正确处理商业字典的输入 .

使用下面的代码,我收到一个错误,我在调用中有一个额外的参数 . 我需要在do / try / catch中包含调用吗?我是Swift的新手,对使用完成处理程序和将项目传递给函数的不同方法感到有点困惑 . 关于堆栈溢出的大多数问题我发现与如何使用NSURLSession有关并且没有那么有用 . 如果这更容易,请高兴地指出文档或相关博客文章的方向 . 谢谢 .

ViewConteroller,我调用该函数并传递商业词典:

FindBar.searchForOpenBar(businesses) {(selectedBar) -> Void in     
    print(selectedBar)
}

来自FindBar,其中逻辑(尚未实现)选择返回由视图控制器使用的条 .

class FindBar {
    typealias Completion = (selectedBar:NSDictionary) -> Void
    func searchForOpenBar(businesses: NSDictionary, completion: Completion) {

        //iterate through the businesses and select the bar
        for business in businesses {

            //temp. hard-coded selection
            foundBar = ["name":"Dive Bar", "address":"123 Main St"]

        }

    //send selected bar back view controller.
    completion(selectedBar: foundBar)

}

1 回答

  • 2

    FindBar 类中,将 func searchForOpenBar 更改为 class func searchForOpenBar

    class FindBar {
        typealias Completion = (selectedBar:NSDictionary) -> Void
        class func searchForOpenBar(businesses: NSDictionary, completion: Completion) {
    
            //iterate through the businesses and select the bar
            for business in businesses {
    
                //temp. hard-coded selection
                foundBar = ["name":"Dive Bar", "address":"123 Main St"]
    
            }
    
        //send selected bar back view controller.
        completion(selectedBar: foundBar)
    
    }
    

相关问题