Ios 带闭包的回调方法?

Ios 带闭包的回调方法?,ios,swift,nsurl,Ios,Swift,Nsurl,这是我从树屋得到的一个非常具体的问题 第一部分:我们正在编写一个应用程序,从Treehouse博客获取最新的博客文章。这需要使用在后台执行的异步方法发出网络请求。为此,我们需要结束。 创建一个名为fetchTreehouseBlogPosts的方法,该方法只有一个参数—一个完成处理程序。闭包有三个参数:一个数据对象,包含请求的结果,类型为NSData!,请求中的HTTP响应对象类型为NSURLResponse!,错误对象类型为NSError!,和返回类型的void /////////////I

这是我从树屋得到的一个非常具体的问题 第一部分:我们正在编写一个应用程序,从Treehouse博客获取最新的博客文章。这需要使用在后台执行的异步方法发出网络请求。为此,我们需要结束。 创建一个名为fetchTreehouseBlogPosts的方法,该方法只有一个参数—一个完成处理程序。闭包有三个参数:一个数据对象,包含请求的结果,类型为NSData!,请求中的HTTP响应对象类型为NSURLResponse!,错误对象类型为NSError!,和返回类型的void

/////////////I get this part and the code is correct as following: 

typealias BlogPostCompletion = ((NSData!, NSURLResponse!, NSError!) -> Void)

func fetchTreehouseBlogPosts(completion: BlogPostCompletion){}

///////////This is the part i cant get right. Please help

Copy paste the following code inside the body of the method:

let blogURL = NSURL(string: "http://blog.teamtreehouse.com/api/")
  let requestURL = NSURL(string: "get_recent_summary/?count=20", relativeToURL: blogURL)

  let request = NSURLRequest(URL: requestURL!)

  let config = NSURLSessionConfiguration.defaultSessionConfiguration()
  let session = NSURLSession(configuration: config)

  // Add your code between the comments

  // Add code above

  dataTask.resume()
您的工作是创建一个名为dataTask的数据任务(不是下载任务),并使用一个返回数据任务结果的完成处理程序。在注释部分之间添加此数据任务。
完成后,在数据任务主体内,将结果返回到fetchTreehouseBlogPosts方法的完成处理程序。

确保也命名了类型。在dataTask之后包括NSURLSessionDataTask,如下所示

让dataTask:NSURLSessionDataTask=session.dataTaskWithRequest(请求){}

然后继续你的陈述。

代码>导入基金会 //在下面添加您的代码 typealias BlogPostCompletion=((NSData!、NSURLResponse!、NSError!)->Void) func fetchTreehouseBlogPosts(完成:BlogPostCompletion){ 让blogURL=NSURL(字符串:http://blog.teamtreehouse.com/api/") 让requestURL=NSURL(字符串:“获取最近的摘要/?计数=20”,relativeToURL:blogURL) let request=NSURLRequest(URL:requestURL!) let config=NSURLSessionConfiguration.defaultSessionConfiguration() let session=NSURLSession(配置:config) 让dataTask:NSURLSessionDataTask=session.dataTaskWithRequest(请求){ (让数据、让响应、让错误)进入 完成(数据、响应、错误) } dataTask.resume() }
因此,如果我没有弄错,您是否希望正确使用您在参数中设置的完成项作为返回?你只想知道语法吗?谢谢Kevin!我得到了如下信息,我不确定这对你是否有意义。。我想他们需要类似这样的格式:让dataTask=session.dataTaskWithRequest(request){(let data,let response,let error)在//1中。如果让httpResponse=response为?NSHTTPURLResponse,请检查HTTP响应是否成功获取请求{让jsonDictionary=NSJSONSerialization.JSONObjectWithData(数据,选项:nil,错误:nil)作为?[String:AnyObject]完成(jsonDictionary)