Quantcast
Channel: Active questions tagged rest - Stack Overflow
Viewing all articles
Browse latest Browse all 3755

Getting data from REST API for iOS

$
0
0

This is my first time using Swift and creating an iOS app and I am having trouble retrieving data from a REST API. I am familiar with Android Development but not iOS.

I am trying to use the API from www.thecocktaildb.com.

An example of a request is http://www.thecocktaildb.com/api/json/v1/1/search.php?s=margarita.

I would like to use this request and input a string margarita, or any other drink name, from a search bar and then display the array of drinks into a tableview.

Right now when I run, I am not getting any response from the console.

Am I on the right track?

I am also not sure how to display each result (drink) in a table view cell.

Here is my file:

SearchViewController.swift

class SearchViewController: UIViewController, UISearchBarDelegate, UITableViewDataSource, UITableViewDelegate {    @IBOutlet weak var TableView: UITableView!    @IBOutlet weak var SearchBar: UISearchBar!    // search in progress or not    var isSearching : Bool = false    override func viewDidLoad() {        super.viewDidLoad()        for subView in self.SearchBar.subviews        {            for subsubView in subView.subviews            {                if let textField = subsubView as? UITextField                {                    textField.attributedPlaceholder  = NSAttributedString(string: NSLocalizedString("Search", comment: ""))                }            }        }        // set search bar delegate        self.SearchBar.delegate = self    }    func searchBar(searchBar: UISearchBar, textDidChange searchText: String) {        if self.SearchBar.text!.isEmpty {            // set searching false            self.isSearching = false        }else{            // set searghing true            self.isSearching = true            let postEndpoint: String = "http://www.thecocktaildb.com/api/json/v1/1/search.php?s="+ self.SearchBar.text!.lowercaseString            guard let url = NSURL(string: postEndpoint) else {                print("Error: cannot create URL")                return            }            let urlRequest = NSURLRequest(URL: url)            let config = NSURLSessionConfiguration.defaultSessionConfiguration()            let session = NSURLSession(configuration: config)            let task = session.dataTaskWithRequest(urlRequest, completionHandler: { (data, response, error) in                guard let responseData = data else {                    print("Error: did not receive data")                    return                }                guard error == nil else {                    print("error calling GET on www.thecocktaildb.com")                    print(error)                    return                }                // parse the result as JSON, since that's what the API provides                let post: NSDictionary                do {                    post = try NSJSONSerialization.JSONObjectWithData(responseData,                        options: []) as! NSDictionary                } catch  {                    print("error trying to convert data to JSON")                    return                }                if let strDrink = post["strDrink"] as? String {                    print("The drink is: "+ strDrink)                }            })            task.resume()        }    }    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {        return 0    }    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {        let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath)        return cell    }    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {    }    // hide kwyboard when search button clicked    func searchBarSearchButtonClicked(searchBar: UISearchBar) {        self.SearchBar.resignFirstResponder()    }    // hide keyboard when cancel button clicked    func searchBarCancelButtonClicked(searchBar: UISearchBar) {        self.SearchBar.text = ""        self.SearchBar.resignFirstResponder()    }    override func didReceiveMemoryWarning() {        super.didReceiveMemoryWarning()        // Dispose of any resources that can be recreated.    }}

Viewing all articles
Browse latest Browse all 3755

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>