Лекция 5 CS193P Spring 2016 — Interface Builder, FaceView Controller, Жесты и Множественные MVCs

Как видно из названия,  Лекция 5 охватывает множество важных тем: дополнительные возможности Xcode по отображению пользовательских изображений непосредственно на storyboard, взаимодействие Модели и Controller с целью изменения View, жесты, множественные MVC и способы их создания.

В начале Лекции 5  продолжается работа над приложение FaceIt, добавляя новые элементы на наше «лицо» — «брови» и возможность «хмурить» их, возможность открывать и закрывать «глаза», что увеличивает маневренность для отображения различных эмоций на нашем «лице».

Показано, как с помощью атрибутов  @IBDesignable и @IBInspectable можно получать и настраивать пользовательские изображения непосредственно на storyboard. Как заставить пользовательский UIView «переписываться» при изменении его public параметров.

Читать далее

Лекция 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.

Читать далее

Лекция 1 CS193P Spring 2016 — Обзор курса и введение в iOS, Xcode и Swift. (часть 2)

screen-shot-2016-11-05-at-3-16-24-pm

Лекция 1 CS196P Весна 2016 и слайды на английском языке находятся на  iTunes название “1. Course Overview and introduction to iOS, Xcode, and Swift.”
Ниже представлен неавторизованный русскоязычный конспект Лекции 1, который состоит из двух частей:
Первая часть Лекции 1 CS193P Весна 2016 — 0 — 60 минута находится
здесь
,
Вторая часть Лекции 1 CS193P Весна 2016 —  60 — 77 минута — находится в этом посте.
Код демонстрационного примера для Лекции 1 находится на Github для Xcode 7 и Swift 2.2. Для Swift 3.0  и Xcode 8 код находится на Github, а для Swift 3 .2  и Xcode 9 — также на Github.

—————— 60-ая минута Лекции ——————

Так что идем дальше и добавляем дисплей на наш пользовательский интерфейс.
Будем добавлять дисплей сверху. Мы хотим что-то подобное тому, что на стандартном калькуляторе, пришедшим вместе с операционной системой  Mac, и чтобы в правом углу был «0», но, возможно, с другими цветами.
Я возвращаюсь в Область Утилит в окно Палитра, откуда я доставал свои кнопки для цифровой клавиатуры. Теперь я буду перетягивать метку — Label, которая представляет собой  readonly текст.

Screen Shot 2016-04-25 at 8.40.47 AM

Пользователь не может касаться метки и затем печатать туда что-то с помощью маленькой клавиатуры на iPhone. Это  readonly текст, и именно его мы хотим иметь на нашем калькуляторе.

Читать далее

Лекция 1 CS193P Spring 2016 — Обзор курса и введение в iOS, Xcode и Swift. (часть 1)

Screen Shot 2016-04-21 at 11.17.38 AM
Лекция 1 и слайды на английском языке находятся на  iTunes название “1. Course Overview and introduction to iOS, Xcode, and Swift.”
Ниже представлен неавторизованный русскоязычный конспект Лекции 1, который состоит из двух частей:

Первая часть — 0 — 60 минута находится в этом посте,
Вторая часть — 60 — 77 минута — здесь.
Код демонстрационного примера для Лекции 1 находится на Github для Xcode 7 и Swift 2.2. Если вы установили Xcode 8, то для Swift 2.3 код находится на Github, а для Swift 3 — также на Github.

————————————————————————————————-

Добро пожаловать на курс Стэнфорда CS193P. Это версия Spring 2016, и сегодня я собираюсь рассказать вам очень быстро о том, что собой представляет этот курс, чтобы вы были уверены, что находитесь в нужном месте.
Screen Shot 2016-04-21 at 3.24.03 PM

Сегодня

  • О чем этот курс?
    • Почему я здесь?
  • Предварительные требования
    • Вы должны быть уверенным объектно-ориентированным программистом.
  • Обзор iOS
    • Что находится в iOS?
  • Покажи мне!
    • Лучше один раз увидеть демонстрационный пример, чем сто раз услышать.

Я буду говорить о предварительных требованиях, потому что это супер важно для успешного прохождения этого курса.
Затем я дам вам очень короткий обзор того, что представляет собой iOS. Большую часть этого вы знаете, потому что у вас есть iPhones или iPads или еще что-то подобное, поэтому я не буду тратить на это много времени.
И дальше мы с вами погрузимся в очень большой демонстрационный пример, который будет заключаться в построении нашего первого приложения. У нас только 10 недель на изучение iOS. Это очень короткий промежуток времени для изучения такой супер мощной системы.

Что мы будем изучать в этом курсе?

Читать далее

Стэнфордский курс «Developing iOS 9 Apps with Swift» теперь доступен на iTunes

Screen Shot 2016-04-20 at 10.07.36 PM
Стэнфордский курс «Developing iOS 9 Apps with Swift» теперь доступен на iTunes. Это долгожданное обновление предыдущего курса по iOS 8 и Swift. В качестве демонстрационного примера используется калькулятор, но другой, не RPN- калькулятор, а обычный и алгоритмически более легкий, чем в предыдущем курсе, а значит будет больше внимания именно Swift. Методически эти лекции выстроена по-другому. Все рассматривается очень детально, особое внимания уделяется типу Optional, семантике value type и reference type. Посмотрим, что будет дальше. Уже есть программа курса.

1 — Введение в iOS 9, Xcode 7.3 и Swift 2.2
2 — MVC; iOS, Xcode и Swift демонстрация

3 — Swift 2.2 в деталях
4 — Drawing (рисование)

5 — Управление Multitouch Gesture (жестами)
6 — Комбинирование MVCs; «жизненный цикл» View Controller

7 — Closures (замыкания); Extensions (расширения); Protocols (протоколы); Delegation (делегирование); ScrollView
8 — Multithreading (многопоточность); Text Field (текстовое поле)

9 — Table View
10 — Core Data

11 — Еще больше Core Data
12 — Autolayout (система Авторазметки); Final Prohect Requirements (требования к финальному проекту)

13 — Animation (анимация)
14 — Еще больше анимации; Alerts

15 — «Жизненный цикл» приложения; Core Motion ()
16 — Core Location (местоположение); Maps (карты)

17 — Еще больше Segues; Visual Effects
18 — Camera (фотокамера); Persistence (постоянное хранение)

Видно, что лекций на одну больше, теперь их 18, вместо предыдущих 17. Есть Core Data, но нет Локализации, что всегда было заключительной лекцией, нет Air Drop и нет явного упоминания Dynamic Animation, хотя анимация, конечно, есть.

По-моему, будет очень интересно. На странице iOS 9 + Swift можно следить за появлением лекций и заданий.

Core Data в iOS 9 и Swift при ограничениях на уникальность.Часть 2.

Screen Shot 2016-04-07 at 5.00.29 PM
Это вторая часть поста. В первой части создается Модель Данных и  экспериментальное приложение CoreData1Swift (Github) с классическим Core Data Stack для получения MOC. В этой части мы рассмотрим другие способы получения MOC, а также различные варианты распространения MOC на другие View Controller пользовательского интерфейса.

Работа с Core Data через UIManagedDocument

В этом разделе для получения MOC вместо Core Data Stack используется UIManagedDocument, который берет на себя все проблемы с созданием стэка Core Data, в том числе и контекста UIManagedObjectsContext, все проблемы с безопасностью многопоточной обработки и т.д. Кроме того, это самый простой способ самостоятельного изучения Core Data и самый короткий способ перехода к  iCloud.

Читать далее

Core Data в iOS 9 и Swift при ограничениях на уникальность. Часть 1.

Screen Shot 2016-04-07 at 5.00.29 PM

Продолжая развивать идею о дополнении курса «Developing iOS 8 Apps with Swift» 2015 г.  некоторыми важными темами, давайте рассмотрим использование Core Data при создании приложений в  iOS 9 на Swift.
Core Data — один из наиболее мощных фреймворков в iOS 9. Фундаментально, это способ создания Swift (Objective-C)  объектов как объектов, “отображенных” в SQL или XML базах данных. Это своего рода “мостик” между объектно-ориентированной “территорией” и “территорией” баз данных. В качестве базы данных доминирует SQLite.

Читать далее