Swift:
Att skriva en textfil

Hur man gör:

Använda Swifts standardbibliotek

Swifts standardbibliotek inkluderar alla verktyg som behövs för att skriva textfiler. Här är en grundläggande metod:

import Foundation

let content = "Hej, Wired-läsare! Att lära sig Swift är kul."
let filePath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as String
let fileName = "\(filePath)/example.txt"

do {
    try content.write(toFile: fileName, atomically: false, encoding: String.Encoding.utf8)
    print("Filen skrevs framgångsrikt")
} catch let error as NSError {
    print("Misslyckades med att skriva till URL: \(fileName), Fel: " + error.localizedDescription)
}

Denna kodsnutt skriver en sträng till en fil som heter example.txt i dokumentkatalogen. Den hanterar potentiella fel med Swifts do-try-catch felhantering.

Använda FileManager för mer kontroll

För mer kontroll över filattribut eller för att kontrollera om filen redan finns, kan FileManager användas:

import Foundation

let fileManager = FileManager.default
let directories = fileManager.urls(for: .documentDirectory, in: .userDomainMask)
if let documentDirectory = directories.first {
    let fileURL = documentDirectory.appendingPathComponent("example.txt")
    let content = "Att utforska Swift för filhantering är upplysande."

    if fileManager.fileExists(atPath: fileURL.path) {
        print("Filen finns redan")
    } else {
        do {
            try content.write(to: fileURL, atomically: true, encoding: .utf8)
            print("Filen skapades och skrevs framgångsrikt")
        } catch {
            print("Fel vid skrivning av fil: \(error)")
        }
    }
}

Använda tredjepartsbibliotek

Ett populärt tredjepartsbibliotek för filsystemoperationer i Swift är Files av John Sundell:

Först, lägg till Files i ditt projekt, vanligtvis via Swift Package Manager.

// swift-tools-version:5.3
import PackageDescription

let package = Package(
    name: "DittPaketnamn",
    dependencies: [
        .package(url: "https://github.com/JohnSundell/Files", from: "4.0.0"),
    ],
    targets: [
        .target(
            name: "DittMålnamn",
            dependencies: ["Files"]),
    ]
)

Sedan använder du det för att skriva till en fil:

import Files

do {
    let file = try File(path: "/path/till/din/katalog/example.txt")
    try file.write(string: "Swift och Files-biblioteket utgör en kraftfull kombination.")
    print("Filen skrevs framgångsrikt med hjälp av Files-biblioteket.")
} catch {
    print("Ett fel inträffade: \(error)")
}

Med Files-biblioteket blir hantering av filer mer rakt på sak, vilket låter dig fokusera på affärslogiken i din applikation snarare än på de detaljerade aspekterna av filhantering.