Bin blutiger Anfänger: Path Control auslesen

Diskutiere das Thema Bin blutiger Anfänger: Path Control auslesen im Forum App Entwickler für iOS.

  1. uhlhorn

    uhlhorn Thread Starter Mitglied

    Beiträge:
    2.448
    Zustimmungen:
    124
    Mitglied seit:
    24.05.2005
    von
    @IBOutlet weak var Quellpfad: NSPathControl!
    „Quellpfad“ ist ein Path Control Objekt (siehe Screenshots) im Programmfenster, wo der Benutzer einen Pfad auswählen kann.
     
  2. Loki M

    Loki M unregistriert

    Beiträge:
    3.513
    Zustimmungen:
    1.032
    Mitglied seit:
    07.02.2005
    NSPathControl hat ein property url: URL welches wiederum ein Member absoluteString: String hat?

    https://developer.apple.com/documentation/appkit/nspathcontrol

    sowas wie
    if let quellPfadString = Quellpfad?.url?.absolueString? (mit optional chaining)

    übrigens, als Konvention: Variablen zbw. Properties in Camel Case.

    Statt Quellpfad also quellPfad, filePath statt FilePath, etc. Ist zwar nicht falsch im eigentlichen Sinne, aber schwierig zu lesen weil man nicht weiss was Typen und was Variablen sind.

    Daher:

    Typen (wie Klassen, Structs, etc): Grossgeschrieben, zB NSURL, MyClass, MyStruct)
    Vars und Properties Camel Case: myURL, myClassInstance, myInt, etc
     
  3. uhlhorn

    uhlhorn Thread Starter Mitglied

    Beiträge:
    2.448
    Zustimmungen:
    124
    Mitglied seit:
    24.05.2005
    Das Problem ist leider, dass ich diese Dokumentationen nicht verstehe. Ich habe nun schon seit Tagen Videos zu Swift angesehen, aber nirgends wird einem erklärt, wie man diese Dokumentationen zu lesen hat.

    Deine verlinkte Seite hatte ich auch schon gefunden. Auf der steht zwar eine Deklaration (mit der ich leider nichts anfangen kann, denn ich weiß nicht, was das bedeutet) und eine Übersicht. Es gibt aber kein Beispiel, wo das mal konkret gezeigt wird.
     
  4. Loki M

    Loki M unregistriert

    Beiträge:
    3.513
    Zustimmungen:
    1.032
    Mitglied seit:
    07.02.2005
    Ein Beispiel:

    @IBAction func gradeButtonPressed(_ sender: Any) {
    if let button = sender as? UIButton {
    if let operandString = button.titleLabel!.text {
    if let operand = Double(operandString) {
    ( ... )
    }
    }
    }
    }

    Hier sieht man;

    1 if let button = sender as? UIButton:
    Variable button wird von Any (unbekannter Typ) gecastet auf UIBUtton

    2 f let operandString = button.titleLabel!.text
    UIButton hat eine Variable titleLabel, welches wiederum eine Variable text hat. So chaint man Objekte, die ggf. Objekte beinhalten.

    Du hast keine Erfahrung mit objektorientierter Programmierung? Java, oder C++?

    Nochmal: beginne einfach mit dem Kurs von Paul Hegarty. Zumindest die Grundlagen der objektorientierten Programmierung solltest du schon draufhaben, sonst wird es schwierig
     
  5. uhlhorn

    uhlhorn Thread Starter Mitglied

    Beiträge:
    2.448
    Zustimmungen:
    124
    Mitglied seit:
    24.05.2005
    Hmm, bekomme jede Menge Fehler …
    Screenshot 2018-12-10 01.24.52.png
     
  6. Loki M

    Loki M unregistriert

    Beiträge:
    3.513
    Zustimmungen:
    1.032
    Mitglied seit:
    07.02.2005
    Sieht aus als hättest du UIKit nicht importiert, daher der erste Fehler vermutlich. Abhilfe: am Beginn der Datei:
    import UIKit

    brain ist eine Instanz einer Klasse aus dem Projekt von dem das kopiert ist, das kennt dein Programm natürlich nicht. Dies auch nur zur Veranschaulichung wie man auf Properties zugreift und wie ggf. optional chaining funktioniert.

    In deinem Fall müsstest du auch auf

    Quellpfad.url.absoluteString zugreifen, um den Pfad als String zu bekommen.

    Sei mir nicht böse, aber ich glaube dir fehlen noch einige Grundlagen. Im verlinkten Kurs gibt Paul Hegarty auch einige Hinweise (wenn auch kein vollständiges Tutorial) wie die integrierte Dokumentation funktioniert.

    Grundsätzlich muss man um die Doku zu verstehen zumindest Grundlagen der objektorientierten Programmierung verstehen.

    Was Properties/Member sind, zb; wie man auf diese zugreift, Zugriffskontrolle (unter Swift etwas anders als zB Java oder C++), der Unterschied zwischen Klassen und Structs unter Swift sollte zumindest bekannt sein.

    Ein letztes Mal mein Tip: zieh dir Hegart rein. Bevor du mit Xcode beginnst, sieh dir mal die ersten 3, 4 Vorlesungen an.

    Hier der Link zu iTunes U, da sind auch die Lecture Slides un Reading Assignments mit dabei:
    https://itunes.apple.com/us/course/developing-ios-11-apps-with-swift/id1309275316

    Hier ein Github Repo mit den Assignments zum Nachprogrammieren: https://github.com/duliodenis/cs193p-Fall-2017
     
  7. uhlhorn

    uhlhorn Thread Starter Mitglied

    Beiträge:
    2.448
    Zustimmungen:
    124
    Mitglied seit:
    24.05.2005
    Screenshot 2018-12-10 01.39.50.png
     
  8. uhlhorn

    uhlhorn Thread Starter Mitglied

    Beiträge:
    2.448
    Zustimmungen:
    124
    Mitglied seit:
    24.05.2005
    Bestimmt fehlen mir eine Menge Grundlagen, daran habe ich gar keine Zweifel. ;-)

    Ich will ja nur ganz simpel den den Pfad auslesen, damit ein Terminal-Befehl zusammenbauen und diesen ans Terminal senden. Das ist für einen Freund, der nicht mit dem Terminal umgehen kann und will.
    Ich ahnte ja nicht, dass man dafür erst Softwaredevelopment studieren muss, um ein einzelnes Feld auszulesen. ;-)
     
  9. Loki M

    Loki M unregistriert

    Beiträge:
    3.513
    Zustimmungen:
    1.032
    Mitglied seit:
    07.02.2005
    Ah, Moment - das ist kein iOS Projekt, richtig? Sorry, mein Fehler. Am Mac gibts keine UIButtons, heisst die Klasse - Überraschung - NSButton

    Naja - Wenn man das Zeugs (das ist schon mächtig mächtig wenn man will) verstehen will... wenns einfach wär könnts ja jeder
     
  10. Loki M

    Loki M unregistriert

    Beiträge:
    3.513
    Zustimmungen:
    1.032
    Mitglied seit:
    07.02.2005
    Einen Pfad ins Terminal legen kannst indem du die entsprechende Datei im Finder einfach ins Terminal ziehst :)
     
  11. uhlhorn

    uhlhorn Thread Starter Mitglied

    Beiträge:
    2.448
    Zustimmungen:
    124
    Mitglied seit:
    24.05.2005
    Ja, ich weiß das. Ich kann mit dem Terminal ganz gut umgehen. ;-) Es gibt aber viele Leute, die das nicht können, was ungefähr 98 % aller Mac-User sein dürften.

    > das ist kein iOS Projekt, richtig?
    Nein, es soll eine macOS-Application werden.

    Screenshot 2018-12-10 01.45.35.png
     
  12. Loki M

    Loki M unregistriert

    Beiträge:
    3.513
    Zustimmungen:
    1.032
    Mitglied seit:
    07.02.2005
    den NSButton musst nicht importieren, das kannst wieder löschen.
    Stattdessen im Quellcode UIButton durch NSButton ersetzen.

    Das bringt aber für deine Zwecke ohnehin nichts. Mir ging es nur darum zu zeigen wie man auf Properties von Variablen zugreift. Du müsstest also von deinem Pfad die url auslesen und von dieser den absoluteString.

    Und was machst du dann mit dem Pfad? Anders gefragt wozu liest du den aus?
     
  13. uhlhorn

    uhlhorn Thread Starter Mitglied

    Beiträge:
    2.448
    Zustimmungen:
    124
    Mitglied seit:
    24.05.2005
    Ja, schon gesehen. ;-) Geht aber auch nicht.

    Ah …

    Vielleicht mache ich das doch lieber in Applescript statt Swift. Dafür meine ich vorhin ein Beispiel gesehen zu haben.
     
  14. Loki M

    Loki M unregistriert

    Beiträge:
    3.513
    Zustimmungen:
    1.032
    Mitglied seit:
    07.02.2005
    Klingt für dein Vorhaben eher Vernünftig...
     
  15. uhlhorn

    uhlhorn Thread Starter Mitglied

    Beiträge:
    2.448
    Zustimmungen:
    124
    Mitglied seit:
    24.05.2005
    Ja, das wundert mich, dass Applescript besser sein soll, denn der Syntax von Swift sieht eigentlich ganz gut aus und ist nicht so vermurkst wie der von Applescript.

    Apple hätte Applescript mal lieber so wie Rexx (oder ARexx) schreiben sollen. Das kann man besser nachvollziehen als diese pseudonatürliche Syntax von Applescript.

    Egal, danke für Deine Hilfe. :)
     
  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite weitersurfst, akzeptierst du unseren Einsatz von Cookies. Akzeptieren Weitere Informationen...