在视图控制器中,我有以下代码:

newPost!.save({ (post, error) in
        //Error here.

        if let anError = error {
            print("error calling POST on /posts")
            print(anError)
            return
        }
        guard let post = post else {
            print("error calling POST on /posts: result is nil")
            return
        }
        // success!
        print(post.description())
        print(post.title)

    })


我不太了解Result<Whatever>语法,Result应该是Alamofire 2中的某个东西,Post是我创建的一个类,但是Result<Post> -> Void到底是什么意思,我该如何更改?

更新:

func save(completionHandler: (Result<Post>) -> Void) {

let fields: [String: AnyObject]? = self.toJSON()
if fields == nil {

print("Error: error converting newPost fields to JSON")
return

}

最佳答案

您的完成处理程序定义和调用方式是不同的,如果您希望以这种方式调用它,请为您的完成处理程序尝试以下操作:

func save(completionHandler: (post:Post?, error:String?) -> Void) {

    let fields: [String: AnyObject]? = self.toJSON()
    if fields == nil {
       completionHandler(nil, "Error converting newPost fields to JSON")
       return
    }
    // rest of code, eventually call completionHandler with success
}


对于Swift 2:

func save(completionHandler: (post:Post?, error:String?) -> Void) {

    guard let fields = self.toJSON() else {
         completionHandler(nil, "Error converting newPost fields to JSON")
         return
    }
    // rest of code, eventually call completionHandler with success

}


Closures Documentation

关于ios - '(_,_,_)-> Void'不能转换为'Result <Post>-> Void',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33050548/

10-14 19:58
查看更多