Swift闭包返回值架构

时间:2018-01-06 16:20:45

标签: ios swift architecture

Swift不允许您将函数返回值放在该函数的块中。从SO上看,我发现我需要在函数内部使用完成块,如下所示。

// This function error for non-void return value
    static func dataForURL(_ url: String)-> UIImage) {
        blockfunc(completion: { (data, error) in
            return data
        })
    }

// This function is okay
    static func dataForURL(_ url: String, completion: @escaping (Data?) -> Void) {
        blockfunc(completion: { (data, error) in
            completion(((error == nil) ? data : nil))
        })
    }

如果我只需要添加一次,那就没问题了 我通过以下方式设置了应用程序架构:

Cell asks PhotoManager for photo -> PhotoManager begins asking file directory/service -> Service will ask FireBaseHelper class to return data from a url

我上面的功能是链中的最后一个,在向firebase询问图像时是什么?步。那么我现在需要为该链中的每个函数添加完成块吗?有没有更好的方法来构建这种流程?

0 个答案:

没有答案