我有一组对象,这些对象在表格视图中显示在屏幕上。数组中的每个对象都有URL属性,可以从中获取其他信息。
在我的情况下,它是声明的数组,通过将GET请求发送到其URL属性,我可以获得带有声明日期的数据的JSON。
我想在表格视图单元格中表示该发行日期。我应该在哪里提出请求?
viewDidLoad
循环的for-in
中tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath)
我尝试了不同的方法,但始终只能得到一个响应(不如array.count
那样多)和许多错误。
请帮助并告知从何开始。
import UIKit
import SafariServices
class DetailDeclarationInfoTableViewController: UITableViewController {
let declarationInfoController = DeclarationInfoController()
var declarationInfo: DeclarationInfo? {
didSet {
print("Received declarationInfo")
}
}
var declarationModifiedDate: [String] = [] {
didSet {
tableView.reloadData()
print("New element in Dates")
print(declarationModifiedDate)
}
}
override func viewDidLoad() {
super.viewDidLoad()
let titleText = String((self.declarationInfo?.items.count)!)
self.navigationItem.title = "Знайдено \(titleText) декларацій"
guard let declarationInfo = declarationInfo else { return }
for declarant in declarationInfo.items {
declarationInfoController.fetchDeclarationDetails(with: declarant.id) { (declarationInfoElement) in
if let declarationInfoElement = declarationInfoElement {
DispatchQueue.main.async {
print(declarationInfoElement)
print("Success!!")
self.declarationModifiedDate.append(declarationInfoElement["declarationType"] as! String)
self.tableView.reloadData()
}
}
}
}
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if let declarationInfo = declarationInfo {
return (declarationInfo.items.count)
} else {
return 0
}
}
override func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableView.automaticDimension
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "declarationInfoCell", for: indexPath)
var personsPlaceOfWork: String = ""
var date: String = ""
if let placeOfWork = declarationInfo?.items[indexPath.row].placeOfWork {
personsPlaceOfWork = placeOfWork
}
if (indexPath.row + 1) <= declarationModifiedDate.count {
date = ", " + declarationModifiedDate[indexPath.row]
}
let cellText = (declarationInfo?.items[indexPath.row].lastname)! + " " + (declarationInfo?.items[indexPath.row].firstname)! + ", " + personsPlaceOfWork + date
cell.textLabel?.text = cellText
cell.textLabel?.numberOfLines = 0
cell.backgroundColor = UIColor.backgroundPink
return cell
}
错误域= NSCocoaErrorDomain代码= 3840“字符0周围的值无效。”用户信息= {NSDebugDescription =字符0周围的无效值。}错误域= NSCocoaErrorDomain代码= 3840“字符0周围的无效值。”用户信息= {NSDebugDescription =字符0周围的无效值。}错误域= NSCocoaErrorDomain代码= 3840“字符0周围的无效值。”用户信息= {NSDebugDescription =字符0周围的无效值。}错误域= NSCocoaErrorDomain代码= 3840“字符0周围的无效值。” UserInfo = {NSDebugDescription =字符0周围的值无效。} [“ declarationYear1”:2016,“ declarationType”:1]成功!日期[“ 1”]
中的新元素
答案 0 :(得分:0)
获取响应后重新加载Tableview并从viewdidload
发出请求。您提到哪种错误?
答案 1 :(得分:0)
问题是,获取数组中第一个对象的信息后,第二个响应是我超出了IP((((