目前我有一些自定义JSON对象:
class JSONObjects {
var airbnbUS: String
var airbnbLocal: String
var image: URL
init(airbnbUS: String, airbnbLocal: String, image: URL){
self.airbnbUS = airbnbUS
self.airbnbLocal = airbnbLocal
self.image = image
}
在解析json之后,我将自定义对象的数组通过segue传输到详细视图控制器上:
var jsonObjectsArray: [JSONObjects] = []
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "practiceTableToDetailSegue" {
if let detailVC = segue.destination as? PracticeDetailViewController {
self.jsonObjectsArray = detailVC.jsonObjectArray
}
}
}
在详细视图控制器上,我想获取自定义对象数组的元素并通过标签显示它们但是当我尝试访问数组时,我得到的唯一选项是
.count,.capacity等
我正在尝试在标签和imageView中显示自定义对象值,但它没有让我选择访问自定义对象值:
class PracticeDetailViewController: UIViewController {
var jsonObjectArray: [JSONObjects] = []
@IBOutlet weak var topLabel: UILabel!
@IBOutlet weak var bottomLabel: UILabel!
@IBOutlet weak var image: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
self.topLabel.text = jsonObjectArray.airbnbUS //DOES NOT WORK!
self.bottomLabel.text = jsonObjectArray.airbnbLocal //DOES NOT WORK!
self.image.image = UIImage(data: jsonObjectArray.image) //DOES NOT WORK!
}
}
答案 0 :(得分:2)
您正在尝试访问阵列上self.topLabel.text = jsonObjectArray[0].airbnbUS //DOES WORK!
self.bottomLabel.text = jsonObjectArray[0].airbnbLocal //DOES WORK!
self.image.image = UIImage(data: jsonObjectArray[0].image) //DOES WORK!
的属性,而不是数组的元素。
试试这个:
JSONObject
另外,一种风格评论:我建议你的课程是单数的(即JSONObjects
而不是JSONObjects
)。当您实例化一个对象时,您只创建一个对象,而不是一堆{{1}}
答案 1 :(得分:0)
尝试这样的事情:
class PracticeDetailViewController: UIViewController {
var jsonObjectArray: [JSONObjects] = []
@IBOutlet weak var topLabel: UILabel!
@IBOutlet weak var bottomLabel: UILabel!
@IBOutlet weak var image: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
self.jsonObjectArray.append(JSONObjects(airbnbUS: "airbnbUS", airbnbLocal: "airbnbLocal", image: URL(string: "url")!))
self.topLabel.text = jsonObjectArray[0].airbnbUS
self.bottomLabel.text = jsonObjectArray[0].airbnbLocal
do {
let data = try Data(contentsOf: jsonObjectArray[0].image)
self.image.image = UIImage(data: data)
} catch {}
}
}