0Pricing
Swift Academy · Lekcja

Logowanie, assert/precondition/fatalError

Logujcie stan za pomocą print/debugPrint i wybierajcie między assert (tylko debug), precondition (sprawdzane w release) a fatalError (awaria) do obsługi niezmienników.

Logowanie, assert/precondition/fatalError to bezpłatna lekcja Swift Academy na CoddyKit. To lekcja 2 z 2. 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 2 lekcji w sumie.

Narzędzia diagnostyczne

Używaj prostego logowania, aby obserwować stan; sprawdzaj założenia za pomocą assert, precondition i fatalError.

  • assert: sprawdzenia wykonywane tylko w trybie debugowania
  • precondition: sprawdzane także w wersji produkcyjnej
  • fatalError: natychmiastowe zatrzymanie programu

Lekkie logowanie

print jest czytelne, a debugPrint pokazuje więcej szczegółów (co jest przydatne podczas debugowania).

let user = ["name": "Ana", "role": "admin"]
print("User:", user)            // user-friendly
debugPrint("User:", user)       // includes type details when available

let point = (x: 3, y: 5)
print("Point:", point)
debugPrint("Point:", point)

assert (tylko w trybie debugowania)

assert zatrzymuje program w trybie Debug, gdy warunek jest fałszywy; w zoptymalizowanych kompilacjach Release jest usuwane.

// Even numbers only (demo)
func half(of x: Int) -> Int {
    assert(x % 2 == 0, "Expected even number, got \(x)")
    return x / 2
}
print(half(of: 8))   // OK in Debug/Release
// In Debug, failing the assert would stop and print the message.
// In Release, assert checks are disabled by default.

precondition (sprawdzane w wersji produkcyjnej)

precondition sprawdza krytyczne wymagania w trybach Debug i Release. Używaj go w przypadku błędów programisty, które nigdy nie powinny wystąpić.

// Safe divide with required precondition
func safeDivide(_ a: Int, by b: Int) -> Int {
    precondition(b != 0, "Divider must be nonzero")
    return a / b
}
print(safeDivide(10, by: 2))    // 5
// If called with 0, precondition fails in Debug and Release.

fatalError (natychmiastowe zatrzymanie)

fatalError natychmiast zatrzymuje wykonywanie programu i wyświetla komunikat. Używaj go w niedostępnych ścieżkach kodu lub w przypadku niezaimplementowanych funkcji podczas tworzenia programu.

enum FileKind { case text, binary }

func open(kind: FileKind) {
    switch kind {
    case .text:
        print("Open text mode")
    case .binary:
        print("Open binary mode")
    // If we ever add a new case and forget to handle it, we could use:
    // default: fatalError("Unsupported file kind")
    }
}
open(kind: .text)

Kiedy używać którego narzędzia

Wskazówki:

  • print/debugPrint stosuj do szybkiego logowania (później usuń je lub uzależnij ich działanie od flag).
  • assert stosuj do sprawdzeń programistycznych wykonywanych tylko w trybie debugowania.
  • precondition stosuj, gdy program nie może kontynuować działania w żadnej kompilacji po niespełnieniu wymagania.
  • fatalError stosuj w niedostępnych lub niezaimplementowanych ścieżkach.

Diagnostyka sprawdzana w wersji produkcyjnej

Szybkie sprawdzenie: Które narzędzie diagnostyczne jest nadal sprawdzane w kompilacjach Release?

Podsumowanie

Podsumowanie: Loguj za pomocą print/debugPrint, zabezpieczaj niezmienniki za pomocą assert (debug), precondition (także w wersji produkcyjnej), a fatalError stosuj w rzeczywiście niedostępnych stanach.

Często zadawane pytania

Czy lekcja „Logowanie, assert/precondition/fatalError” jest bezpłatna?

Tak — pełny tekst „Logowanie, assert/precondition/fatalError” 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 2 lekcji w sumie.

Co nauczysz się w „Logowanie, assert/precondition/fatalError”?

Logujcie stan za pomocą print/debugPrint i wybierajcie między assert (tylko debug), precondition (sprawdzane w release) a fatalError (awaria) do obsługi niezmienników. Ć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 2.

Ile czasu zajmuje lekcja „Logowanie, assert/precondition/fatalError”?

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. Podstawy XCTest (targets, fixtures)
  2. Logowanie, assert/precondition/fatalError
← Powrót do Swift Academy