Skip to content

Latest commit

 

History

History
236 lines (149 loc) · 24.1 KB

Lecture02.md

File metadata and controls

236 lines (149 loc) · 24.1 KB

Xcode, Playground, iPadOS

За да започнем да творим (да създаваме приложения) трябва да се запознаем с инструментите, които са ни необходим. Основно ще изпозлваме macOS компютър, който е препоръчвания варинат за разработка от Apple.

За целите не на курса ще покажем и по-лекият вариант за обучение - Swift PLaygrounds. Приложение, което е налично на iPad и macOS, и може да се използва за разработка на софтуер, който покрива изискванията на учебния курс (идеален е за обучение, а дори може и да реализирате и професионални проекти с него, но идва с ограничени възможности).

Професионалните разработчици на мобилни приложения за iOS и приложения за macOS (и други съвместими операционни системи) използват Xcode и други съвместими технологии (Ruby, Python, shell scripts, т.н.), за да могат да разрешават задачите си с лекота.

Какво е Xcode?

Xcode е среда за програмиране. Програма, която използваме за да пишем приложения (други програми) и програмен код на Swift (и не само). Xcode изпозлва външни програми за да трансформира текста (Swift) в други програми. Тези програми са компилатори като - Swift Compiler, clang (което идва от C languages), LLVM. Системата е доста комплексна и изграждана в продължение на десетки години. Повече за историята на Xcode може да прочетете тук.

Ще се опитаме да се запознаем в детайли с версия 14 на Xcode.

Почти всяка година излиза нова версия на това приложения, която въвежда по нещо ново, с цел да направи процеса на разработка на софтуер по-лесен.

Не е задължително да се използва Xcode при разработката на приложения. Може да изпозлвате VSCode, AppCode или произволен друг инструмент, но Xcode e стандарта и е предпочитан от повечето разработчици.

Ето как изглежда интерфейса на Xcode:

Xcode SwiftUI Project A SwiftUI project opened in Xcode 14.

Тук виждаме два от трите основни панела. Левият се нарича Навигатор (Navigator), а десният Редактор (Editor).

Xcode SwiftUI Project В ляво със синьо - Навигарота. В дясно с червено - редактора.

Навигатора, показва проекта (всички негови елементи). Можем да избираме различните елементи, чиито съдържание после се представя в основния панел - редактора. Всеки елемент в навигатора има отличителна икона, която подсказва от какъв тип е съответния файл/ресурс.

Първият елемент представлява нашия проект. В случая той се казва - SwiftUI Demo App.

Изгледът на реактора (централния изглед) се променя в зависимост, кой елемент от проекта бъде избран. В момента е избран файла ContentView.swift. Затова и виждаме малко код на Swift (SwiftUI)

Редактора има платно, което визуализра кода, ако той е SwiftUI. Визуализирането е в реално време. Т.е. ако променим кода в лявата част на редактора, след много малко време ще се промени и изгледа на приложението (екрана от приложението) в дясно.

Ако кодът е само Swift ще виждаме само програмния код, като той ще бъде форматиран визуално.

Визуалното форматиране ни позволява по-лесно да можем да разпознаваме елементите на езика (запазените думи). Следните елементи са характерни за този изглед.

  1. Имаме номера на редовете. Изпозлва се, за да може лесно да се намират грешките в кода. Това е начин за номериране/адресиране на кода, така че да може се посочи еднозначно грека, ако има такава. (Ще видим подобни примери.)
  2. Има тектс в сив цвят. Това са коментарите във Swift.

    Коментарите са част от програмния код, но не са част от финаланта програма. Те помагат в различни насоки като - по-лесното ориентиране в логическата организация на кода, съхраняват бележки и допълнителна информация, която прави процесът по разработка лесен.

  3. Розови думи, които са малко по плътни (bold). Това са запазените думи в езика, които имат определено значение (смисъл). (Това са тези думи от картинката. В Swift има още. Ще научим повечето за тях в следващата лекция за Swift.)
    • import
    • struct
    • var
    • some
    • static

Запазените думи в прогрмните езици са различни и тяхния брой се променя (расте) с версиите на Swift.

Навигатор панелът има различни табове. Всеки таб има различна роля и визуализация. Някои от тези табове са доста по-често използвани.

Project Navigator (Навигатор на проекта)

Xcode SwiftUI Project Изобразява файловете в проекта.

В долната част в ляво има бутон +, който позволява добавянето на нови файлове или групи към проекта.

Xcode SwiftUI Project Добави файл, група или произволен елемент към проекта.

Ако изберете New File... ще видите следния прозорец, който ще ви помогне да добавите необходимия вид файл, който търсите. Процесът е с няколко стъпки.

Xcode SwiftUI Project Избери какъв вид файл искаш да добави към проекта.

Xcode е достатъчно "умен" софтуер, който разполага с базови шаблони за различните типове файлове. Идеята на тази автоматизация е да ви спести време.

Symbol Navigator (Навигатор на символите)

Xcode SwiftUI Project Типовете в проекта са изборазени като текст, с техните характеристики.

В дъното на панела има филтър и различни бутони (C) - показва само класове и протоколите (структурите пак са тук) , (Документ) - включва само типовете от проекта, (М) - показва само контейнерите

Xcode SwiftUI Project Редакторът може да показва различни файлове хоризонтално и вертикално. Въпрос на гледна точка.

Find Navigator (Търсене)

Xcode SwiftUI Project

Issue Navigator (Грешки)

Xcode SwiftUI Project

Test Navigator (Тестове)

Xcode SwiftUI Project Няма тестове в текущия проект. Ако имаше unit или UI тестове, те всиките ще бъдат изборазени тук. Могат да бъдат стартирани.

Debug Navigator (Дебъг панел)

Ето как изглежда дебъг панела, когато няма активно приложение за дебъгване.

Xcode може да стартира дебъгване на приложение в симулатор или върху работещо устройство (iPhone, iPad, Apple Watch, AppleTV), което е свързано с кабел или по WiFi. Xcode SwiftUI Project

Xcode SwiftUI Project

Breakpoint Navigator (Стоп точки при дебъгване)

Xcode SwiftUI Project

Report Navigator (доклади)

Xcode SwiftUI Project

Ето и някои допълнителени елементи, които са съществени при работата с Xcode.

Първо трябва да отбележим, че текстовия редактор предоставя реален изглед на потребителския интерфейс, когато пишем SwiftUI компонент. Този изглед се нарича canvas - канава (или платно).

Изгледа в Xcode, изпозлва симулатор и стартира кода, който пишем, като отразява промените почти мигновенно. Ако допуснем грешка, това се визуализира в редактора (виж червените съобщения) и изгледа не се обновява.

Не можем да видим интерфейс, ако приложението ни не се компилира. Т.е. трябва да се стараем винаги да е синтактично правилно - да може да се компилира.

Любознателния читател може да потърси повече за целия процес на превръщане на програмния код в изпълнимо приложение тук. Xcode ни помага, като следи за разлиНите стъпки, през които трябва да се мине.

Над канавата има два бутон - един плюс - който отваря библиотеката с готовите елементи - много подходящ в самото начало, когато още не познаваме всички компоненти и бутона за показване и скриване на инспекторите (подеобен има и в горния ляв край за показване и скриване на навигатора). Ще разгледаме тези две полезни функции.

Library (библиотека с готови елементи)

При натискане на бутона "+" се отваря нов прозорец, който на базата на контекста (какво е селектирано сега) изобразява списък с готови елементи, които можем да добавим към текущя файл.

Често ще използвате библиотеката, когато пишете SwiftUI или Swift код. Ето и какви възможности ни предоставя тя.

Когато става въпрос за SwiftUI тогава режимите между които можем да избираме почват с този за различни контроли (view-та). Xcode SwiftUI Project

Следващия режим е с различни модификатори, които можем да прилагаме към нашите контроли или към SwiftUI кода.

Xcode SwiftUI Project

Ако обаче сме избрали нормален swift файл, тогава наличните режими са малко по-различни. Първият режим (има четери режима) е списък от примерни шаблони с код, които предоставят основната структура, а програмиста трябва да попълни динамините (променливите) елементи. Тези малки примери - така наречение снипети са много полезни, понеже спестяват време, особенно когато става въпрос за по-сложни синтактини конструкции.

Xcode SwiftUI Project

Вторият режим е добавяне на медия. Тук трябва да имате добавени различни асети (картинки, видео, аудио и други) Xcode SwiftUI Project След това режимът за избор на цвят. Той е доста полезен, когато имаме дефинирани цветове в нашия проект. Можем да ги изпозлваме директно в проекта. Xcode SwiftUI Project

Може да добавяте цветове (в Assets каталога) като описвате тяхното поведение в зависимост от разлиния цветови режим, в който е стартирано вашето приложение - има тъмен и светъл режим. Всеки цвят, които дефинираме, може да има различен изглед в тези два режима (може и да е един и същ).

На последно място остава стандартния режим за избор на символи, които ни позволяват да изпозлваме стандартния набор от символи, с което приложенията на платформите изглеждат подобно и потребителите се ориентират доста по-лесно. Xcode SwiftUI Project

Inspectors (инспектори)

Какво е Swift Playgrounds?

Приложение, което позволява по-лесно обучаване в програмирането със Swift и SwiftUI.

Доста картинки, които обясняват как може да го ползваме.

за macOS

Приложението може да се изтегли от mac AppStore.

за iPadOS

Приложението може да се изтегли от AppStore.

Няма съществена разлика между приложението на macOS и това на iPadOS.

Какви са тези файлове .swiftpm, .swift?

.swift - файлове които съдържат програмния код. .swiftpm - файл (цяла директория, която съдържа swiftui проект), който съхранява целия проект създаден със Swift Playgrounds. Може да се отвори със Xcode.

Структура на базово SwiftUI приложение

Структурата на базов SwiftUI проект се свежда до следните няколко вида файлове.

  1. Описател на проекта .xcodeproj. Конкретно - SwiftUI Demo App.xcodeproj (в основата на навигатор изгледа. Обозначен със синя икона с А.)

    Това е директория и вътре има няколко файла. Основният е project.pbxproj, където с тест е описана структурата в определен формат разбираем от Хcode.

  2. Assets.xcassets - каталог с ресурси. Може да са картинки, звуци, видео и не само.

    Preview Assets.xcassets - каталог с ресурси, които се ползват само в процеса на разработка, но няма да са част от финалното приложение.

  3. SwiftUI_Demo_AppApp.swift - началната точка на приложението. Името може да е различно. Само една е за приложение.

    .swift файловете съдържат логиката на приложението.

Един проект може да има и много други файлове и ресурси. Програмистите са свободни да добавят различни неща, стига крайният резултат да е нещо, което може да бъде изпозлвано.

Тук може да намерите детайлно описание на всички елементи и интерактивен пример.

Структура на базово UIKit приложение

UIKit приложението има няколко отделни части, като основните са:

  • Application Delegate
  • Main Storyboard
  • Assets Catalog
  • Info.plist

Какво е UIApplication

Входната точка приложението.

Какво е AppDelegate

Класът, който имплементира AppDelegate предоставя механизъм, да можем да реагиараме на рачлични съобщения от операционната система.

Какви са тези файлове .swift, .storyboard

Файловете, чието разширение завършва със .swift са такива файлове, които съдържат прогамен код. В зависимост какво прави този програмен код, Xcode сам определя как ще ги изобрази в реактроската част. Дали ще е само като текстов редактор (валиден изглед) за всички .swift файлове, които не съдържат SwiftUI код. Или като редактор и платно за визуализация на SwiftUI код.

Платното в дясно се нарича canvas и може да бъде скрито/изключено.

Файловете с разширение .storyboard са част от проекти, които използват Storyboard. Познати са още като проекти базирани на UIKit.

Възможно е да имаме SwiftUI проект, който да изпозлва UIKit елементи и да изпозлва .storyboard за реализирането на част от изгледите.

Проектите са микс от различни файлове с код, картинки, музика, и друг вид ресурси. Крайният резултат е приложение.

Ние ще разгледаме основните типове файлове изграждащи двата вида основни проекти. Ще се опитаме да обясним структурата на проекта. Ако създаваме и работим над различни проекти, постепенно ще научим тази структура и ще знаем ролята на всеки един елемент.

В момента ще опишем най-основните части, така че да можем да разберем основната картина. Ако трябва да влезем в детайли ще трябва да четем с разбиране документацията изготвена от Apple.

Не всичко е написано достатъчно детайлно в документацията. Добре е да изпозлваме различни достоверни източници, за да можем да намерим достатъчно добро обяснение за всеки елемент на проекта.

Какво е Project, target, scheme?

Проектът се съхранява във "файл" (директория) .xcodeproje, която има сложна структура. project.pbxproj съдържа описанието на целия проект, със различните ресурси, които са част от различните target-и (таргети). Всеки таргет описва рецепта, по която може да се приготви (компилира от кода) приложени за операционна система, която е от възможните.

Можем да имаме един проект, който да има различни таргети, за iOS и производните.

Какво представява info.plist?

В този файл се описват различни конфигурации на приложенията за macOS, iPadOS, iOS, tvOS, watchOS.

Различни конфигурации и текстове, които се показват на потребителя, за да даде съгласието си за достъп до даден ресурс се съхраняват тук. Операционната система има различни механизми за защита на данните. За да предостави достъп на произволно приложение, то трябва да поиска изрично съгласие от потребителя.

Следните често срещани функционалности изискват съгласие от потребителя.

  1. Достъп до снимките
  2. достъп до камера
  3. достъп до микрофон
  4. достъп до локация (местоположение)
  5. достъп до push notifications (пуш-съобщения/напомняния)
  6. Достъп до локалната мрежа и други