Swift Academy · Lekcja

Odczytywanie i zapisywanie danych

Trwałe zapisywanie danych i ciągów znaków na dysku.

Lekcja 2 z 413 kroki

Odczytywanie i zapisywanie danych to bezpłatna lekcja Swift Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Swift Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Swift Academy zawiera 4 lekcji w sumie.

Odczytywanie i zapisywanie danych

Typ Data z Foundation przechowuje surowe bajty, a zarówno String, jak i Data potrafią odczytywać dane z plikowych adresów URL i zapisywać je pod nimi.

Zapisywanie ciągu znaków

write(to:atomically:encoding:) zapisuje ciąg znaków pod plikowym adresem URL. Zapis atomowy korzysta z pliku tymczasowego, aby uniknąć uszkodzenia danych.

import Foundation

let url = URL(fileURLWithPath: "/tmp/hello.txt")
try? "Hello, file!".write(to: url, atomically: true, encoding: .utf8)
print("Wrote string to disk")

Odczytywanie ciągu znaków

String(contentsOf:encoding:) wczytuje plik z powrotem do pamięci jako tekst.

import Foundation

let url = URL(fileURLWithPath: "/tmp/hello.txt")
if let text = try? String(contentsOf: url, encoding: .utf8) {
    print(text)
}

Praca z Data

Data(contentsOf:) odczytuje dowolny plik jako surowe bajty, dzięki czemu nadaje się do obrazów, archiwów i formatów binarnych.

import Foundation

let url = URL(fileURLWithPath: "/tmp/hello.txt")
if let data = try? Data(contentsOf: url) {
    print("Byte count: \(data.count)")
}

Zapisywanie danych

data.write(to:) zapisuje bajty w pliku. W połączeniu z kodowaniem można w ten sposób przechowywać tekst lub dowolny zserializowany ładunek danych.

import Foundation

let bytes = Data([0x48, 0x69])
let url = URL(fileURLWithPath: "/tmp/bytes.bin")
try? bytes.write(to: url)
print("Wrote raw data")

Konwersja Data na String

Obiekt Data można przekonwertować na tekst za pomocą String(data:encoding:), jeśli znane jest kodowanie bajtów.

import Foundation

let data = Data([0x48, 0x69])
if let s = String(data: data, encoding: .utf8) {
    print(s)
}

Kodowanie JSON

Za pomocą JSONEncoder można przekształcić wartość zgodną z Codable w obiekt Data gotowy do zapisania na dysku.

import Foundation

struct Note: Codable { let text: String }
let data = try? JSONEncoder().encode(Note(text: "hi"))
let url = URL(fileURLWithPath: "/tmp/note.json")
try? data?.write(to: url)
print("Saved JSON")

Dekodowanie JSON

Należy ponownie odczytać dane i zdekodować je za pomocą JSONDecoder do typu modelu.

import Foundation

struct Note: Codable { let text: String }
let url = URL(fileURLWithPath: "/tmp/note.json")
if let data = try? Data(contentsOf: url),
   let note = try? JSONDecoder().decode(Note.self, from: data) {
    print(note.text)
}

Zapisy atomowe

Opcja atomically: true zapisuje dane w pliku tymczasowym, a następnie zmienia jego nazwę, dzięki czemu odczytujący nigdy nie zobaczą pliku zapisanego tylko częściowo.

import Foundation

let url = URL(fileURLWithPath: "/tmp/safe.txt")
try? "important".write(to: url, atomically: true, encoding: .utf8)
print("Atomic write done")

Obsługa błędów

Operacje na plikach mogą zgłaszać błędy. Należy używać konstrukcji do/catch, aby reagować na brakujące pliki lub problemy z uprawnieniami, zamiast doprowadzać do awarii programu.

import Foundation

let url = URL(fileURLWithPath: "/does/not/exist.txt")
do {
    _ = try String(contentsOf: url, encoding: .utf8)
} catch {
    print("Read failed: \(error.localizedDescription)")
}

Dopisywanie a zastępowanie

Podstawowa metoda write(to:) zastępuje zawartość pliku. Aby dopisać dane, należy otworzyć obiekt FileHandle i przed zapisem przejść na koniec pliku.

import Foundation

let url = URL(fileURLWithPath: "/tmp/log.txt")
if let handle = try? FileHandle(forWritingTo: url) {
    handle.seekToEndOfFile()
    handle.write(Data("line\n".utf8))
    try? handle.close()
}
print("Appended")

Szybkie sprawdzenie

Co gwarantuje opcja atomically: true podczas zapisu?

Podsumowanie

Odczytywali i zapisywali Państwo tekst za pomocą String(contentsOf:) i write(to:atomically:encoding:), obsługiwali surowe bajty przy użyciu Data, zapisywali modele za pomocą JSONEncoder/Decoder, używali zapisów atomowych, przechwytywali błędy i dopisywali dane za pomocą FileHandle. Następny temat: zarządzanie katalogami.

Bezpłatny start

Ucz się Swift dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
122
Lekcje
409

Często zadawane pytania

Czy lekcja „Odczytywanie i zapisywanie danych” jest bezpłatna?

Tak — pełny tekst „Odczytywanie i zapisywanie danych” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Swift Academy, przejdź na CoddyKit PRO. Kurs Swift Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Odczytywanie i zapisywanie danych”?

Trwałe zapisywanie danych i ciągów znaków na dysku. Ćwiczysz Swift Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Swift Academy?

Nie wymagamy żadnego doświadczenia. Swift Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Odczytywanie i zapisywanie danych”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Swift Academy?

Tak. Każda lekcja Swift Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Adresy URL i ścieżki plików
  2. Odczytywanie i zapisywanie danych
  3. Zarządzanie katalogami
  4. Katalogi piaskownicy aplikacji
← Powrót do Swift Academy