Swift处理类,UIButtons和tableView

时间:2016-11-07 23:19:22

标签: swift uitableview uibutton

这可能听起来像是一个非常愚蠢的问题,但我对于斯威夫特来说相当新,并且无法思考如何解决这个问题。正如您在此Screenshot中所看到的,我在RecipesViewController中有一个搜索配方文本字段,用户输入食物项目(我在api调用中使用)。在用户点击按钮后,我调用api并从该api获取数据,并将该数据存储在RecipesViewController类的实例变量(searchRecipe数组)中。现在我试图在表视图中显示我从api收到的数据,所以我有另一个名为SearchRecipeTViewController的类。在这个类中,我想用从api收到的数据填充表格,但是当我尝试访问searchRecipe数组(存储从api接收的元素)时,我得到一个空白值,我理解是由于实例变量被初始化为“”。但是现在我该如何解决这个问题,以便我可以从api获取数据并在用户点击按钮时将其显示在表格视图中。任何建议,将不胜感激。

单击按钮时从api调用和获取数据的代码

@IBAction func SearchButton(sender: UIButton) {
if let recipe = RecipeSearchBar.text {
        searchRecipe = recipe
    }
    //search recipe API call
    endpoint = "http://api.yummly.com/v1/api/recipes?  _app_id=apiID&_app_key=apiKey&q=\(searchRecipe)"
    Alamofire.request(.GET, endpoint).responseJSON { response in
        if response.result.isSuccess {
            let data = response.result.value as! NSDictionary
            if let matches = data["matches"] as? [[String: AnyObject]]    {
                for match in matches {
                    if let name = match["recipeName"] as? String {
                        self.recipeName.append(name);
                    }
                }
            }
        }
        else if response.result.isFailure {
            print("Bad request")
        }
    }
}

1 个答案:

答案 0 :(得分:-1)

尝试使用SwiftyJSON来操作API返回的JSON。 SwiftyJSON使得使用JSON的API调用更加容易。以下是我使用的代码,它使用了Alamofire和SwiftyJSON。

//Use alamofire to connect to the web service and use GET on it
    Alamofire.request(url).responseJSON { response in
        if let error = response.result.error {
            print("Error: \(error)")
            return
        }

        //Value is the response the webservice gives, given as a Data Obkect
        if let value = response.result.value {
            //The information given from the webservice in JSON format
            let users = JSON(value)
            print("The user information is: \(users)")

            //Get each username in the JSON output and print it
            for username in users.arrayValue{
                print(username["username"].stringValue)
            }
        }
    }

忘记添加指向SwiftJSON的链接:https://github.com/SwiftyJSON/SwiftyJSON