Лекция 4 CS193P Spring 2016 — Views

Лекция 4  полностью посвящена Views. Views — это прямоугольные области на экране, в которых мы рисуем и получаем от пользователя так называемые “жесты прикосновения” (touch gestures), как одинарные, так и множественные. Но на Лекции 4 ведется разговор только о рисовании, управление жестами перенесено в Лекцию 5. Никогда раньше в своих курсах Пол Хэгарти не уделял столько внимания рисованию Views. Возможно, это связано с тем, что компактность кода и богатство синтаксических конструкций Swift позволяют представить рисование как увлекательный и очень интеллектуальный процесс.

Читать далее

Лекция 3 CS193P Spring 2016 — Больше Swift и Фреймворк Foundation.

На Лекции 3 профессор говорит по большей части о слое, который лежит под слоем пользовательского интерфейса (UI). А именно о языке Swift и о фреймворке Foundation, который “живет” в верхней части Core Services. В этой лекции вообще нет ничего о UI. 

Лекция начинается с подробного рассказа о том, что представляет собой Optional и как интерпретировать такой «синтаксический сахар» для него, как ?, !  и ??, а также «цепочки» Optional. Кратко представлены кортежи (tuples) и диапазоны  Range<T> .

Затем анализируются основные структуры данных в Swift : class, struct, enum. Обсуждается их сходство и различия. Особенное внимание уделено семантике value type и reference type. Подробно представлен синтаксис именования параметров функций в Swift. Рассматриваются самые «крутые» возможности свойств: наблюдатели  willSet{} и didSet {} и отложенная инициализация lazy. Уделено должное внимание массивам Array<T>,  словарям Dictionary <Key, Value>, строкам String и их интересным методам.

Читать далее

Задание 1 cs193p Spring 2016 Калькулятор. Решение. Обязательные и дополнительные пункты.

Содержание

Текст Домашнего задания на английском языке доступен на  iTunes в пункте “Programming: Project 1: Calculator″На русском языке вы можете скачать здесь:

Задание 1 iOS 9.pdf

Начинаем выполнять Задание 1 с кода, полученного в конце Лекции 2. Профессор настоятельно рекомендует не копировать код в первых 2-х Лекций, а непосредственно печатать, так как это даст хороший опыт освоения среды разработки Xcode. Я все-таки привела на Github код демонстрационного примера, соответствующий окончанию Лекции 2. Это позволит совсем начинающим не «застрять» на самом первом этапе.

Ниже приводится решение всех пунктов задания для тех, кто хочет сравнить свой результат с моим, и окончательный код  Задания 1 на Github.

В дополнение к Заданию 1 решаются вопросы работоспособности приложения на реальном устройстве в разных Регионах и построения адаптивного интерфейса, когда UI выглядит принципиально по-разному в портретном и ландшафтном режимах.

Для отдельных пунктов Задания есть релизы на Github для Xcode 7 и Swift 2.2.:
обязательные пункты 1-3, дополнительный 4,
обязательные пункты 4-8, дополнительный 4,
 дополнительные  1-2,
 дополнительный  3
с региональной точкой 
адаптивный интерфейс
отдельный Action для кнопки С
программируемый калькулятор — Лекция 3
глобальный formatter c помощью мгновенно выполняемого замыкания 

Если вы установили Xcode 8, то для Swift 2.3 код находится на Github, а для Swift 3 — также на Github.

Пункт 2 обязательный

Ваш калькулятор (calculator) уже умеет работать с числами с плавающей точкой (например, если вы последовательно будете нажимать на клавиши 3 ÷ 4 =,  то он покажет правильный результат  0.75), тем не менее, пока нет возможности ввести число с плавающей точкой. Это надо исправить. Разрешите вводить только правильные числа с плавающей точкой (например,  “192.168.0.1”  — неправильное число с плавающей точкой). Вам нужно добавить новую кнопку с точкой “.”. В этом задании не беспокойтесь о точности и значащих цифрах (включая нижеприведенные пункты задания).

Прежде всего надо сделать небольшое замечание относительно точки «.» как десятичного разделителя.

Читать далее

Лекция 2 CS193P Spring 2016 — Применяем MVC.

Screen Shot 2016-05-05 at 8.38.58 PM

На Лекции 2 профессор подробно объясняет использование паттерна MVC для разработки iOS приложений.

Затем следует продолжение демонстрационного приложения Калькулятор, начатого на прошлой лекции. Происходит разделение классов Модели и классов, обслуживающих View Controllers. Появляется новый класс CalculatorBrain, который является классом Модели и имеет свои особенности. На примере этого класса профессор показывает, как проектировать класс, отталкиваясь от его public API. Используются все возможные в  Swift структуры данных : класс class, перечисление enum и структура struct. Подчеркиваются основные их отличия. Очень подробно рассказывается об ассоциированных значениях enum и Optionals, которые также являются enum.

Читать далее