Plist Import in TableView

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Plist Import in TableView

    Guten Morgen,
    ich versuche als Swift Beginner eine Plist in einen TableView einzulesen und habe dabei zwei Fehler die ich nicht in den Griff bekomme.
    Eventuell kann mir jemand einen passenden Tip dazu geben


    Quellcode

    1. //
    2. // ViewController.swift
    3. // Tableview
    4. //
    5. // Created by MA on 10.01.18.
    6. // Copyright © 2018 MA. All rights reserved.
    7. //
    8. import UIKit
    9. class ViewController: UIViewController {
    10. @IBOutlet weak var tableView: UITableView!
    11. var items = [[String:String]]()
    12. override func viewDidLoad() {
    13. super.viewDidLoad()
    14. // Do any additional setup after loading the view, typically from a nib.
    15. //Initialisieren der Plist Variariable
    16. self.items = loadPlist()
    17. print(items)
    18. }
    19. func loadPlist()->[[String:String]]{
    20. let path = Bundle.main.path(forResource: "list", ofType: "plist")
    21. return NSArray.init(contentsOf:URL.init(fileURLwithPath: path!)) as! [[String:String]]
    22. }
    23. extension ViewController:UITableViewDatasource,UITableViewDelegate{
    24. func tableView(_ tableView: UITableView, numbersOfRowInSection setion: Int)-> Int{
    25. return self.items.count
    26. }
    27. func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath)-> UITableViewCell{
    28. let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
    29. let item = self.items[indexPath.row]
    30. cell.textLabel?.text = item["tBM"]
    31. cell.detailTextLabel?.text = item["info"]
    32. return cell
    33. }
    34. }
    35. func tableView(_ tableView: UITableView, highForRowAt indexPath: IndexPath) -> CGFloat {
    36. return 120
    37. }
    38. override func didReceiveMemoryWarning() {
    39. super.didReceiveMemoryWarning()
    40. // Dispose of any resources that can be recreated.
    41. }
    42. }
    Alles anzeigen
    ich habe in der Zeile 29 den Error "Argument labels '(fileURLwithPath:)' do not match any available overloads"
    und in der Zeile 32 den Error "Declaration is only valid at file scope"

    Ich versuche aus einer list.plist Daten in ein TableView/Cell auszulesen und anzuzeigen..

    wäre klasse wenn mir jemand nen Tip geben könnte. 8o
    vg
  • motiongroup schrieb:

    ich habe in der Zeile 29 den Error "Argument labels '(fileURLwithPath:)' do not match any available overloads"
    Das 'w' in fileURLwithPath: muss groß geschrieben sein, also fileURLWithPath:


    motiongroup schrieb:

    und in der Zeile 32 den Error "Declaration is only valid at file scope"
    Die extension, die deine Klasse erweitern soll, schreibst du innerhalb der Klassendefinition der Klasse. Irgendwie sinnlos, oder?
  • Michael schrieb:

    motiongroup schrieb:

    und in der Zeile 32 den Error "Declaration is only valid at file scope"
    Die extension, die deine Klasse erweitern soll, schreibst du innerhalb der Klassendefinition der Klasse. Irgendwie sinnlos, oder?

    Ich weiß nicht. Wäre das _grundsätzlich_ wirklich so 'sinnlos'? Man könnte so vielleicht zusammenhängende Implementationsdetails strukturiert gruppieren… Nur mal so laut gedacht.

    Der Compiler beschwert sich hier aber auch nicht darüber, daß es die gleiche Klasse ist, sondern daß Extensions zur Zeit (noch?) grundsätzlich nur auf oberster Ebene ('file scope') verwendet werden können.

    Quellcode

    1. struct Foo {
    2. struct Bar {}
    3. extension Bar { } // error: declaration is only valid at file scope
    4. }
    5. extension Foo.Bar { } // OK
    Das iPhone sagt: "Zum Antworten streichen". Wie? Echt Jetzt? Muß ich erst die Wohnung streichen!?
  • vielen Dank ich habe das gleich mal ausgebessert ... ich glaube ich muss mir den Font größer stellen.. 8|
    Die extension, die deine Klasse erweitern soll, schreibst du innerhalb der Klassendefinition der Klasse. Irgendwie sinnlos, oder?

    hmm vermutlich aber ich bin noch Neueinsteiger und ich habe das im Internet zum Thema gefunden und getestet wie sich das verhält..

    ich habe sie wieder Aufgelöst und als.

    class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource

    definiert..

    funktioniert derweilen :rolleyes:
  • motiongroup schrieb:

    hmm vermutlich aber ich bin noch Neueinsteiger und ich habe das im Internet zum Thema gefunden und getestet wie sich das verhält.
    Es ist ja möglich, mit extensions seinen Code zu strukturieren. Du hast es nur an die falsche Stelle geschrieben.

    Quellcode

    1. class ViewController: UIViewController {
    2. ...
    3. }
    4. extension ViewController: UITableViewController, UITableViewDataSource {
    5. ...
    6. }
  • torquato schrieb:

    Ich weiß nicht. Wäre das _grundsätzlich_ wirklich so 'sinnlos'?
    Ich denke schon.

    torquato schrieb:

    Man könnte so vielleicht zusammenhängende Implementationsdetails strukturiert gruppieren…
    Macht man doch, wenn man die extension in die selbe Datei schreibt. Und innerhalb einer Klasse kann man ja mit // MARK: strukturieren. Was sollte da eine „innere“ extension an Mehrwert bringen?
  • Leuchtet ein Michael ...

    Werde das im Hinterkopf behalten.. studiere gerade das Swift4 Buch und lasse in Verbindung dazu Den swiftyguy mitlaufen und alleine da wird schnell klar das die Entwickler nicht unterschiedlicher Denken können... 8o wie gesagt ich bin Neuling .. und komme noch Turbopascal und VBA und auch das ist schon eine Zeit her..

    Suche eh gerade einen Hobbyisten im Raum Wien zum lernen .. sind anscheinend spärlich gesät ;(
    Ich werde mich dem ganzen eben vorsichtig nähern..