【发布时间】:2017-06-30 03:15:13
【问题描述】:
我正在尝试使用 ViewController 上的 ID 获取数据。我有两个视图控制器,当我按下 Cell(来自 ViewController 1)时,它有一个 ID 并转到 ViewController 2 并获取分配给 ID 的所有记录。例如,在 ViewController 1 上,我有一个 UITableView 并且有 20 个单元格。每个单元格都有一个从数据库动态分配给它的 ID。当我按下单元格时,假设我按下了第 9 个单元格并且它的 ID 是 99,然后它会转到 ViewController 2 并获取所有外键 ID 为 99 的记录。
请在下面找到我的 ViewController 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
}
}
感谢您的时间和精力:)
【问题讨论】:
-
您面临什么问题?它是否在第二个 viewController 上显示数据?还是没有在控制器 1 上获取 id?
-
@iOSGeek ,我无法获取数据。我可以在 ViewController 2 上看到与其关联的 ID。我想查看所有具有 ID 的相关数据,例如; 99
-
您在日志中得到什么错误响应?是不是你在 alamofire 中的 api 甚至没有被击中,只是出现错误,如代码响应 (-1)
-
@iOSGeek 我现在可以在输出框中看到数据,但是它崩溃了
-
我得到的错误是线程 1:信号 SIGABRT
标签: ios swift xcode swift3 alamofire