私は複数の "ドリルダウン"テーブルビューのplistからデータを表示するために取り組んでいます。表示されるデータは読み取り専用になるだけで、Webデータに基づいている必要はありません。最大100データポイントしかないので、JSONの代わりにplistを使用することができます。テーブルビューのplistからデータの配列を表示する
とにかく、質問は...私はかなりよく表示するために管理していた辞書項目の配列を持っています。スタックオーバーフローに関する以下の質問に関するGitHubから始めました(少し修正しましたが、それは重要ではありません)。私は一人一人の下の項目(この例では、「友人」)の配列を表示していると助けを必要と何
Load data from a plist to two TableViews
https://github.com/DonMag/SWPListData
。以下のコードはうまくいけば説明します。
私は、データを表示するのViewControllerに今モデル
struct EmployeeDetails {
let functionary: String
let imageFace: String
let phone: String
//This is the new array I've added and am having trouble displaying
let friends: [String]
init(dictionary: [String: Any]) {
self.functionary = (dictionary["Functionary"] as? String) ?? ""
self.imageFace = (dictionary["ImageFace"] as? String) ?? ""
self.phone = (dictionary["Phone"] as? String) ?? ""
//I've initialised it here.
self.friends = (dictionary["Friends"] as? [String]) ?? [""]
で空の配列を作成しました。私は、 "functionary"、 "imageFace"、 "phone"の正しいデータを表示するのに全く問題はありませんが、自分のセクションに配列として "friends"を表示することはできません。私は、主な問題は、numberOfRows
とcellForRow
であるかなり確信している:
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if section == 0 {
if let theEmployee = newPage {
return theEmployee.details.count
}
return 0
}
else if section == 1 {
return 1
}
else if section == 2 {
if let theEmployee = newPage {
return theEmployee.details.count
}
return 0
}
else {
return 0
}
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) // as! TableViewCell2
if indexPath.section == 0 {
cell.textLabel?.text = "A"
if let theEmployee = newPage {
cell.textLabel?.text = theEmployee.details[indexPath.row].functionary
cell.detailTextLabel?.text = theEmployee.details[indexPath.row].phone + " (" + theEmployee.details[indexPath.row].imageFace + ")"
}
}
else if indexPath.section == 1 {
cell.textLabel?.text = "Test"
}
else if indexPath.section == 2 {
cell.textLabel?.text = ????
}
return cell
}
私はそれがnumberOfRows
に次のように書いて働くだろうと思った:
else if section == 2 {
if let theEmployee = newPage {
return theEmployee.details.friends.count
}
return 0
}
しかし、私はエラーを取得する:
value of type '[EmployeeDetails]' has no member 'friends'.
配列を取得するには何が必要ですか?
注:配列は空ではありません。
ご意見/ご協力いただければ幸いです!
を次のように次のステップは、テーブルビューでこれを追加することです、私はあなたがこのtheEmployee.detailsようにそれを書くべきだと思う[yourIndex] .friends.count – 3stud1ant3