Pro praktické cvičení si vytvořte jednoduchou aplikaci, která zobrazuje seznam úkolů. Použijte SwiftUI a @State pro správu dat. Přidejte možnost přidávat a mazat položky. Tím si osvojíte základní principy: vazbu dat na rozhraní, předávání dat mezi obrazovkami a práci s uživatelským vstupem. Během vývoje narazíte na to, že je nutné řešit i správu souborů nebo ukládání dat. Pro začátek stačí použít UserDefaults pro jednoduché nastavení, ale pro složitější data sáhněte po Core Data nebo SwiftData, které jsou součástí systému.<br>
<br>
<br>
<br>
Růst codebase s sebou nese tlak na rychlost dodávání nových funkcí. Často se ale zapomíná na to, že testy nejsou jen pojistka proti regresím, ale i nástroj, který ovlivňuje rychlost vývoje. Klíčové je najít rovnováhu mezi jednotkovými testy, které testují izolované části kódu, a integračními testy, které ověřují spolupráci komponent. Pokud je poměr špatně, údržba testů začne požírat čas, který by mohl jít do produktu.<br>
<br>
<br>
<br>
<img src="https://www.freepixels.com/class=" style="max-width:440px;float:left;padding:10px 10px 10px 0px;border:0px;">Další past je přeposílání požadavků stále dokola. Mnoho API má limity – kolikrát za minutu můžeš volat. Pokud je překročíš, dostaneš status 429 (příliš mnoho požadavků). Řešení? Přidej do svého kódu čekání mezi požadavky, nebo implementuj zpětné čekání, když server odpoví 429. Nezapomeň také na to, že některé API potřebují hlavičku s autorizačním tokenem. Bez ní ti vrátí 401, i když je adresa správná. Ukládej token neveřejně, ideálně do proměnné prostředí, ne přímo do zdrojového kódu.<br>
<br>
<br>
<br>
Dalším aspektem je doba běhu. Pokud testy trvají déle než pár minut, vývojáři je přestanou spouštět před commitem. Proto rozdělte testy na rychlé (jednotkové) a pomalé (integrační). Rychlé testy spouštějte při každé změně, pomalé až v CI při sestavení pull requestu. Tím zajistíte, že vývojář dostane rychlou zpětnou vazbu, ale zároveň se ověří celková funkčnost systému.<br>
<br>
<br>
<br>
Základní rozdíl spočívá v modelu dat. Relační databáze vyžadují pevné schéma – předem definujete tabulky, sloupce a vztahy. NoSQL databáze pracují s flexibilnějšími strukturami, jako jsou dokumenty, klíče a hodnoty, grafy nebo sloupce. To znamená, že můžete ukládat data bez předchozí definice struktury a měnit ji za běhu. To je užitečné zejména v projektech, kde se požadavky na data rychle vyvíjejí, nebo kde jednotlivé záznamy mají různý tvar.<br>
<br>
<br>
<br>
Na závěr se zaměřte na testování. Xcode nabízí Unit Testy a UI Testy, které vám pomohou odhalit chyby dříve, než se dostanou k uživatelům. Nepodceňujte psaní testů ani pro malé projekty. Stačí pár testů pro klíčové funkce, a získáte jistotu při refaktorování kódu. Pamatujte také na to, že iOS vývoj se neustále vyvíjí, takže sledujte oficiální dokumentaci a novinky na konferencích. S těmito základy se rychle propracujete k funkční aplikaci, kterou budete moci nahrát do App Storu, ale to už je téma na další článek.<br>
<br>
<br>
<br>
Zásadní rozdíl najdete také v práci s transakcemi a zámky. PostgreSQL používá MVCC, což znamená, že čtení neblokuje zápis a naopak. To je výhoda, ale vyžaduje to pravidelné spouštění VACUUM, aby se databáze nezanášela mrtvými řádky. Po migraci nastavte autovacuum tak, aby odpovídalo zátěži vaší aplikace. Dále zkontrolujte, zda vaše aplikace nepoužívá MySQL specifické příkazy jako INSERT IGNORE nebo ON DUPLICATE KEY UPDATE – v PostgreSQL je musíte nahradit pomocí INSERT ... ON CONFLICT DO NOTHING nebo DO UPDATE.<br>
<br>
<br>
<br>
Moderní JavaScript, označovaný jako ES6+, přináší řadu nástrojů, které zásadně mění způsob psaní kódu. Nejde o žádnou revoluci, ale o praktická vylepšení, která šetří čas a zpřehledňují projekty. Ať už pracujete na menší webové aplikaci nebo rozsáhlém systému, znalost těchto funkcí vám umožní psát čistší a udržitelnější kód. V tomto článku se zaměříme na konkrétní techniky, na něž se vyplatí zaměřit, a upozorníme na časté nástrahy, které při jejich používání vznikají.<br>
<br>
<br>
<br>
Struktura projektu a základní koncepty Po vytvoření projektu uvidíte soubory s příponou .swift. Hlavní logika aplikace se píše do tříd, které dědí z UIViewController neboSwiftUI View. Pokud používáte SwiftUI, deklarativní syntaxe vám umožní popsat rozhraní pomocí jednoduchých struktur. UIKit je naopak imperativní a vyžaduje více kódu pro správu životního cyklu obrazovek. Pro začátek je vhodné zvolit SwiftUI, protože je modernější a méně náchylné k chybám při správě paměti. Přesto se vyplatí rozumět oběma frameworkům, protože mnoho existujících projektů stále používá UIKit.<br>
<br>
<br>
<br>
Nejdůležitější dovednost: číst chybové odpovědi Chyby nejsou nepřítel, ale zpětná vazba. Když server vrátí status 404, neznamená to „selhal jsem", ale „adresa neexistuje". Status 401 nebo 403 zase říká, že nemáš oprávnění. Místo paniky se nauč číst hlavičky odpovědi a tělo chyby. Mnoho API vrací detailní popis problému v JSON. Zkopíruj si chybovou hlášku do vyhledávače (ale pozor, ne sem) a najdeš řešení. Typická začátečnická chyba je ignorovat status a rovnou zpracovávat data, která možná ani nepřišla.