Einlesen von Dateien Dateiname im URL Format

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

Aufgrund der Corona-Krise: Die Veröffentlichung von Stellenangeboten und -gesuchen ist bis 31.12.2021 kostenfrei. Das beinhaltet auch Angebote und Gesuche von und für Freischaffende und Selbstständige.

  • Einlesen von Dateien Dateiname im URL Format

    Guten Tag an alle, ich hoffe das mir hier jemand auf die Sprünge helfen kann.
    Also wie mein Username schon zeigt, nicht wirklich viel Ahnung von Swift, aber ich mogle mich mit Hilfe von Google und meiner Swift Bibel (Das Swift Handbuch) so durch. Also ich lerne und lerne und lerne und stosse immer wieder auf Probleme.
    Die meisten konnte ich inzwischen auch lösen, obwohl, dass doch immer verdammt lange dauert. Doch diesmal bin ich wirklich an meine Grenzen gekommen, bitte nicht meckern wenn ich nicht die konkreten Begrifflichkeit einer objektorientierten Sprache verwende, wie gesagt ich lerne noch.Zum Hintergrund noch etwas, im Moment beschäftige ich mich doch fast ausschliesslich mit der Entwicklung von Mac OS Software (reines Privatvergnügen) IOS kommt vielleicht viel viel später dran.

    nun zum Problem, ich hadere etwas mit dem FileManager, inzwischen habe ich es hinbekommen, das ich aus meinem Dokumentenverzeichnis für einen Subfolder den Inhalt des Verzeichnisses in einem array (naja eigentlich einem URL array) eingelesen habe. Ich hatte das vorher als String versucht, habe dann aber da aufgegeben. Das ganze mache ich so:

    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    let auspfad = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0].appendingPathComponent("/daten/JHU-Projekt/JHU-Export")

    let directoryContents = try FileManager.default.contentsOfDirectory(at: auspfad, includingPropertiesForKeys: nil)

    // print(directoryContents)
    =====================================================================================================================
    alles gut die einzelnen Elemente kann ich auch per print auflisten. Soweit so gut, aber wie bekomme ich die Datei jetzt per Swift eingelesen?
    Da verzweifle ich, weiss nicht wie ich dem FileManager den Pfad (also die URL) mitgeben kann damit ich dann die Datei per

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    // Text2 enthält als String die komplette Datei zum durchsuchen
    Text2 = (try String(contentsOf: einpfad, encoding: .utf8))
    }catch {/* error handling here */}
    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    einlesen kann, bin für jeden Denkanstoss dankbar, also ich möchte eigentlich nur aus einem bestimmten Unterverzeichnis jede Datei einzeln, nacheinander einlesen, und verarbeiten.
    :?: :?:
    Thx
  • Danke, genau das hatte ich auch vor, also dass ich aus der URL einen String Array machen musste hatte ich schon gedacht, aber es klemmt irgendwie beim Einlesen der Datei, hättest du mal ein kurzes Beispiel wie man eine Datei aus einem String Array einliest also mein Versuch via
    Text2 = (try String(contentsOf: einpfad, encoding: .utf8))
    scheitert, der läuft noch nicht ?( einmal auf einen Fehler, es passiert halt gar nichts ausser dass im Debug die Felder leer bzw mit einem Error belegt sind.
    Das kann mal wieder an meinem mangelndem Verständnis zum FileManager liegen, ich denke ich muss doch irgendwie dem FileManager mitteilen, das ich jetzt die Datei einlesen will, daran scheint es zu scheitern oder ???

    also für ein Beispiel wie es funktionieren könnte wäre ich sehr dankbar
  • Level0 schrieb:

    Text2 = (try String(contentsOf: einpfad, encoding: .utf8))

    scheitert, der läuft noch nicht ?( einmal auf einen Fehler, es passiert halt gar nichts ausser dass im Debug die Felder leer bzw mit einem Error belegt sind.
    Du bist schon auf dem richtigen Weg, musst Dich aber entscheiden, ob Du die Lokation der Datei als (lokale) URL verwendest oder mit Pfaden in Strings arbeitest ... das hast Du oben gemischt:

    Ich würde nur URLs nutzen (m. W. empfiehlt Apple dies auch), aber die von Dir verwendete Funktion des FileManagers liefert ein Array von Pfaden. Also entweder diese in URLs umwandeln oder eine andere Funktion nutzen, die direkt URLs liefert.

    Der FileManager hat mit dem Lesen der Dateien nichts zu tun, er liefert nur die Informationen über die Verzeichnisstruktur und erlaubt Dateioperationen "von aussen" wie Löschen, Kopieren, Verschieben und Ordneroperationen. Das Lesen übernehmen die "Zielklassen" wie Data, String etc.

    Mattes

    P.S.: Bitte verwende für Quellcode bitte das entsprechende Tag, das hilft beim Lesen...
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • Danke für die Hinweise,

    mittlerweile (nach 2 Tagen probieren) habe ich es hinbekommen. Deshalb dhat meine Antwort auch etwas gedauert.
    .
    Vielen Dank MyMattes, ich hatte eigentlich das Problem so auch vermutet, aber auch andere Vermutungen, so hast du mir geholfen, weil die Aussagen in der Dokumentation von Apple sind nicht immer so eindeutig wie erwartet.

    Zuerst hatte ich Lösung versucht den Pfad in eine URL umzuwandeln, lt. Google gibt es dafür zwei Funktionen, die haben bei mir aus welchen Gründen auch immer nicht funktioniert, immer wieder kam die Fehlermeldung das kein Typ URL aus String erstellt werden kann. Dies hat mich dann nach mehreren Stunden Try and Erorrr dazu bewogen es anders zu versuchen.

    Also wieder mehrere Stunden investiert um den Ansatz zu überarbeiten und mir das Verzeichnis als URL auszugeben. Da mir die Syntax von Swift doch da einige Probleme bereitet hat das auch wieder gedauert.
    Was solls, ich brauchte einen Denkanstoss,den habe ich bekommen und es funktioniert. Vielen Dank an alle für die Unterstützung.

    PS: Ich will mich an die Regeln halten, deshalb die Frage: Ich finde keine Möglichkeit hier im Editor den gewünschten TAG einzufügen, wie mache ich das am besten, einfach in Klarschrift im Code darüberschreiben oder wie ?

    Danke
  • Neu

    Level0 schrieb:


    PS: Ich will mich an die Regeln halten, deshalb die Frage: Ich finde keine Möglichkeit hier im Editor den gewünschten TAG einzufügen, wie mache ich das am besten, einfach in Klarschrift im Code darüberschreiben oder wie ?
    Einfach mit dem entsprechenden Button der Format-Leiste beim Schreiben Deiner Antwort:


    Das sieht dann so aus:

    Quellcode

    1. if (TRUE) {
    2. doSomething()
    3. }
    4. else {
    5. doNothing()
    6. }
    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • Neu

    Level0 schrieb:


    Vielen Dank MyMattes, ich hatte eigentlich das Problem so auch vermutet, aber auch andere Vermutungen, so hast du mir geholfen, weil die Aussagen in der Dokumentation von Apple sind nicht immer so eindeutig wie erwartet.

    Zuerst hatte ich Lösung versucht den Pfad in eine URL umzuwandeln, lt. Google gibt es dafür zwei Funktionen, die haben bei mir aus welchen Gründen auch immer nicht funktioniert, immer wieder kam die Fehlermeldung das kein Typ URL aus String erstellt werden kann.
    Ich meckere viel über die deutlich schlechter gewordene Apple-Dokumentation, aber sie weisst sehr deutlich aus, welche Datentypen eine Funktion erwartet bzw. liefert. So siehst Du zum Beispiel, dass die von mir oben verlinkte Funktion ein Array von URLs liefert. Oder wenn Du hier in die Dokumentation von URLs schaust, hast Du eine Funktion, die aus einem Pfad eine File-URL macht.

    Ich würde bei solchen Fragen eher die Original-Dokumentation als Google bemühen...

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.