Tuesday, 8 December 2015

SWIFT: GET DATA FROM WEBSERVICE

GET JSON DATA  OR ARRAY DATA FROM SERVICE IN SWIFT 2.0

 let url =  " "

/*-------------------------- Get Json data -------------------------------------------------*/

func loadWebServiceData(){
        self. fillTheData(url, callback: self.jsonData, errorCallback: self.showError)
    }

func fillTheData(url: String?, callback: (NSDictionary) -> Void, errorCallback: (Void) -> Void){
        if url != nil{            
            if let nsurl = NSURL(string: url!){
                let request = NSURLRequest(URL: nsurl)
                NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue(), completionHandler:{response, data, error -> Void in
                    if error == nil{
                        if let dataDict = self.parseJSON(data!){
                            callback(dataDict)
                        }else{
                            errorCallback()
                        }
                    }else{
                        errorCallback()
                    }
                })
            }else{
                errorCallback()
            }
        }else{
            errorCallback()
        }
    }


func parseJSON(data: NSData)->NSDictionary?{
        do {
            let dataDict = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers) as? NSDictionary
            return dataDict
        } catch{
            //ErrorHandler.Instance.showError()
            return nil
        }
    }

func jsonData(data: NSDictionary){
  print("this is an json data:   \(data)")
}

/*-------------------------- Get Array data -------------------------------------------------*/

func loadWebServiceData(){
        self.fillTheDataFromArray(url, callback: self.arrayData, errorCallback: self.showError)
    }

func fillTheDataFromArray(url: String?, callback: (NSArray) -> Void, errorCallback: (Void) -> Void){
        if url != nil{
            if let nsurl =  NSURL(string: url!){
                let request = NSURLRequest(URL: nsurl)
                NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue(), completionHandler:{response, data, error -> Void in
                    if error == nil{
                        if let dataArray = self.parseJSONArray(data!){
                            callback(dataArray)
                        }else{
                            errorCallback()
                        }
                    }else{
                        errorCallback()
                    }
                })
            }else{
                errorCallback()
            }
        }else{
            errorCallback()
        }
    }

func parseJSONArray(data: NSData)->NSArray?{
        do {
            let dataDict = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers) asNSArray
            return dataDict
        } catch let error as NSError {
            print("json error: \(error.localizedDescription)")
            return nil
        }
    }




func showError(){
   print("error occured")
}

func arrayData(data: NSArray){
  print("this is an array data:   \(data)")
}

No comments:

Setting Up Multiple App Targets in Xcode from a Single Codebase

 To create two different apps (like "Light" and "Regular") from the same codebase in Xcode, you can follow these steps b...