Помогите до распарсить Plist


#1

Здравствуйте!
Помогите распарсить Plist такого типа:

Проблема с variaty, никак не могу до него добраться(

  import UIKit

  var Masss: [Mass] = []
  var Dasss: [Das] = []

  func LoudMasss() {
var returnAreay: [Mass] = []
let path = Bundle.main.path(forResource: "Mass2", ofType: "plist")

let array = NSArray(contentsOfFile: path!)  as? [[String: Any]]
for massDictionary in array! {
    let mass = Mass(dictionary: massDictionary as NSDictionary)
    returnAreay.append(mass)
}
Masss = returnAreay
   }

  struct Mass {

var id: String
var name: String
var variaty: [Das]?

init(name: String, id: String) {
    self.name = name
    self.id = id
}

init(dictionary: NSDictionary) {
    self.id = dictionary.object(forKey: "id") as! String
    self.name = dictionary.object(forKey: "name") as! String
}
 }

 struct Das {

var id2: String
var name2: String

init(name2: String, id2: String) {
    self.name2 = name2
    self.id2 = id2
}
}

#2
func loudMasss() -> [Mass] {
    return (try? PropertyListDecoder().decode([Mass].self, from: Data(contentsOf: #fileLiteral(resourceName: "Mass2.plist")))) ?? []
}

struct Mass: Codable {
    var id: String
    var name: String
    var variaty: [Das]?
}

struct Das: Codable {
    var id2: String
    var name2: String
}


#3

Так просто…
Спасибо!

А как добраться до variaty?

Пытаюсь вот так, но без успешно:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "ditail", let indexPath = tableView.indexPathForSelectedRow  {
        let vc = segue.destination as! TableViewController
        vc.Dass = [loudMasss()[indexPath.row]]
        
        print(vc.Dass as Any)
    }
}

другой tv

 var Dass = loudMasss()

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! TableViewCell
    let currentCell = Dass[indexPath.row].variaty
     
    print(currentCell as Any)
    //cell.name.text = currentCell

    return cell
}

#4

Наверно как то так:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "ditail", let indexPath = tableView.indexPathForSelectedRow  {
        let vc = segue.destination as! TableViewController
        vc.masss = loudMasss()[indexPath.row]
    }
}
var mass: Mass!

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! TableViewCell
    let currentCell = mass.variaty?[indexPath.row]
    print(currentCell)
    return cell
}