Swift 3 / Alamofire 4:在表观视图上获取具有ID的数据



我正在尝试使用ViewController上的ID获取数据。我有两个viewControllers,当我按单元格(从ViewController 1(下,它具有ID,然后转到ViewController 2并获取分配给ID的所有记录。例如,在ViewController 1上,我有一个Uitable View,有20个单元格。每个单元格从数据库中动态分配给它。当我按单元格时,假设我按了第9个单元格,并且它的ID为99,则转到ViewController 2并获取所有外键具有ID99的记录。

请在下面找到我的代码2:

import UIKit
import Alamofire
import SwiftyJSON

class CategoryViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, NSURLConnectionDelegate {
var tableData = Array<Category>()
var arrRes = [[String:AnyObject]]() //Array of dictionary
var category = [Category]()
var catTitle = ""
var id = ""

@IBOutlet weak var catTitleRec: UILabel!
@IBOutlet weak var tableview: UITableView!


override func viewDidLoad() {
    super.viewDidLoad()
    catTitleRec.text = catTitle
    loadCategories()
}
func loadCategories(){
    let testhappyhour:Category = Category(tempName: "category.NAME", tempID: "category.id",  tempgbcount: "TOTAL")
    self.category.append(testhappyhour)
    let postID = "id="+id
    print("Response ID-is: (postID)") // Able to get the ID here
    Alamofire.request("http://www.URL.com.au/database/results.php").responseJSON
        { response in switch response.result {
        case .success(let JSON):
            let response = JSON as! NSArray
            print("Response: (response)")
            for item in response { // loop through data items
                let obj = item as! NSDictionary
                let happyhour = Category(tempName:obj["category.NAME"] as! String, tempID:obj["category.id"] as! String,  tempgbcount:obj["TOTAL"] as! String)
                self.category.append(happyhour)
                self.arrRes.append(obj as! [String : AnyObject]) // ADD THIS LINE
            }
            self.tableview.reloadData()
        case .failure(let error):
            print("Request failed with error: (error)")
            }
    }
}
override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    tableview.reloadData()
}
override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    //return myarray.count
    return arrRes.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "groupCell") as! GroupCellTableViewCell
    var dict = arrRes[indexPath.row]
    cell.nametextlabel.text = dict["category.NAME"] as? String
    cell.totaltextlabel?.text = dict["TOTAL"] as? String
    return cell
}

}

感谢您的时间和精力:(

func loadCategories(id : String) {

    let userDic : [String : AnyObject] = ["id":id as AnyObject]
      Alamofire.upload(multipartFormData: { multipartFormData in
        for (key, value) in userDic {
            multipartFormData.append(value.data(using: String.Encoding.utf8.rawValue)!, withName: key)
        }
    },to: "http://www.URL.com.au/database/results.php" , method: .post, headers: nil ,
      encodingCompletion: { encodingResult in
        switch encodingResult {
        case .success(let upload, _, _):
            upload.response { [weak self] response in
                guard self != nil else {
                    return
                }
                debugPrint(response)
            }
            upload.responseJSON {  response in
                print(response)
                let responseJSON = response.result.value as! NSDictionary

                print(responseJSON)

            }
        case .failure(let encodingError):
            print("error:(encodingError)")
        }

    })

用您的ID在ViewDidload中调用此功能

loadCategories(id:id)

制作一个swift文件,然后放置此代码api.swift

APi.swift
    import Foundation
    import Alamofire

    class APIClient {
    internal typealias CompletionBlock = (_ data:NSDictionary?,_ error:NSError?) -> Void
         fileprivate class func executePostAPICallWithMethod(_ method:String ,withParameters parameters:AnyObject?, callback:@escaping CompletionBlock) {
                let str = method

                Alamofire.request(str, method: .post, parameters: parameters as? [String : AnyObject], encoding: JSONEncoding.default).responseJSON { response in
                    switch response.result {
                    case .success(let JSON):
                        //                    print("Success with JSON: (JSON)")
                        print("Request failed with error: (response.response?.statusCode)")
                        let response = JSON as! NSDictionary
                        callback(response,nil)
                        break
                    case .failure(let error):
                        print("Request failed with error: (error)")
                        callback(response.result.value as? NSMutableDictionary,error as NSError?)
                        break
                    }
                    }
                    .responseString { response in
                        print("Response String: (response.result.value)")
                }
            }
          class func loadCategories(_ detail : [String : AnyObject],completion:@escaping CompletionBlock){
                let strMethod = String(format : "http://www.URL.com.au/database/results.php" )
                self.executePostAPICallWithMethod(strMethod, withParameters: detail as AnyObject?) { (data, error) -> Void in
                    completion(data,error)
                }
            }
    }

在ViewController中2在ViewDidload中调用此功能

func loadCategories(id : String)
{
 let userDic : [String : AnyObject] = ["id":id as AnyObject]
        APIClient.loadCategories(userDic,completion:{ (data, error)->Void in
            if((error) != nil) {
                if((data) != nil){

                } else {
                }
            } else {
                print(data as Any)

                //self.tableview.reloadData()
            }
        })
}

最新更新