Hi Welcome all to this basic swift closures example
Now lets begin with the actual closure class
Now lets begin with the actual closure class
typealias CompletionBlock = ((NSData?) -> Void) //like typedef a completionBlockName or alais
class ServiceClass: AnyObject //The class is of type any object
{
internal func makeServiceCall(urlToCall:String,completionHandler: CompletionBlock)
{
let googleURL:NSURL? = NSURL(string: urlToCall) //Can be nil
let request:NSURLRequest = NSURLRequest(URL: googleURL!);
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { (data, response, error) -> Void in
print("response is \(response)");
print("response is \(error)");
print("response is \(data)");
if((error) == nil) //Could rather use if let here
{
completionHandler(nil);
}
else
{
if let finaldata = data
{
completionHandler(finaldata);
}
else
{
completionHandler(nil);
}
}
}
task.resume();
}
}
How to invoke there methods are as follows.
override func viewDidLoad() {
super.viewDidLoad()
ServiceClass().makeServiceCall("http://google.com") { (ServiceData) -> Void in
if let _ = ServiceData
{
print("service data==\(ServiceData)")
}
else
{
print("service data is nil")
}
};
// Do any additional setup after loading the view, typically from a nib.
}
No comments:
Post a Comment