这是我从树屋里得到的一个非常具体的问题 第一部分:我们正在编写一个应用程序,以从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方法的完成处理程序。
答案 0 :(得分:0)
确保您也为该类型命名。 dataTask之后包含NSURLSessionDataTask就像这样......
让dataTask:NSURLSessionDataTask = session.dataTaskWithRequest(request){} ....
&安培;然后继续你的陈述。
答案 1 :(得分:0)
import Foundation
// Add your code below
typealias BlogPostCompletion = ((NSData!, NSURLResponse!, NSError!) -> Void)
func fetchTreehouseBlogPosts(completion: BlogPostCompletion) {
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)
let dataTask: NSURLSessionDataTask = session.dataTaskWithRequest(request) {
(let data, let response, let error) in
completion(data, response, error)
}
dataTask.resume()
}