【问题标题】:Objective C blocks and Swift Closure [closed]Objective C 块和 Swift Closure [关闭]
【发布时间】:2014-08-01 09:23:26
【问题描述】:

我想将以下内容转换为 swift。

- (AFHTTPRequestOperation *)GOQIIGET:(NSString *)URLString
parameters:(id)parameters
success:(void (^)(id responseObject))success
failure:(void (^)(NSError *error))failure
{
    return [self GET:URLString parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
    success(responseObject);
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    failure(error);
    }];
}

谢谢

【问题讨论】:

  • 你在转换过程中被困在哪里?
  • 我正在阅读“我懒得自己尝试,请为我做”

标签: objective-c swift objective-c-blocks


【解决方案1】:

我的 Swift 项目 atm 中没有包含 AFNetworking,因此我无法查看已翻译的标题。您必须检查类型,下面的代码肯定不会立即匹配它们。但无论如何,这是一个想法:

func GOQIIGET(
    urlString: String?,
    parameters: AnyObject?,
    success: (( responseObject: AnyObject? ) -> Void)?,
    failure: (( error: NSError? ) -> Void)?
    ) -> AFHTTPRequestOperation?
{
    return self.GET( urlString, parameters: parameters,
        success: { ( operation: AFHTTPRequestOperation?, responseObject: AnyObject? ) in
            if let success = success {
                success( responseObject: responseObject )
            }
        },
        failure: { ( operation: AFHTTPRequestOperation?, error: NSError? ) in
            if let failure = failure {
                failure( error: error )
            }
        })
}

【讨论】:

  • 我希望响应对象成功并且它不编译。失败时给出错误
  • 是的@Rob,你是对的。我正在检查它并编辑了我的答案。
  • 嗯嗯,我学到了一些写这篇文章的技巧。 ;)
  • 你能告诉我们代码没有编译吗
  • 哈哈。是的。我将为闭包参数名称填充一个雷达,它应该像我认为的任何其他函数或方法一样工作。
猜你喜欢
  • 1970-01-01
  • 2015-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多