Stanford CS 193P iOS 7 Лекция 12 — Documents и Core Data

 Лекция 12 целиком теоретическая и посвящена Core Data.

Начинается с создания Data Model для простейшей задачи с двумя сущностями: Photo и Photographer. Определяются их атрибуты и взаимосвязи. На основе визуальной карты базы данных создаются классы для ManagedObjects: Photo  и Photographer, которые функционируют в контексте ManagedObjectsContext.

Задача получения текущего контекста ManagedObjectsContext решается не традиционным способом через шаблон Core Data ( при создании проекта поставить «галочку»), который выдает кучу кода в AppDelegate.swift, большая часть которого посвящена созданию стэка Core Data, а через UIManagedDocument, который берет на себя все проблемы с созданием стэка Core Data, в том числе ManagedObjectsContext, с безопасностью многопотоковой обработки и т.д. Кроме того, это самый короткий способ перехода к  iCloud.

Рассматривается способ синхронизации множества контекстов ManagedObjectsContexts, указывающих на одну и ту же базу данных, через Notifications.

Создание  subclasses ManagedObjects с помощью Xcode на основе визуальной карты базы данных и использование «точечной нотации» доступа к свойствам, а также наполнение этих  subclasses пользовательскими (custom) методами  через механизм «категорий» ( categories)

Вставка  ManagedObjects, изменение атрибутов, удаление и запросы.

«Дескрипторы сортировки», «маленький язык» предикатов, составные предикаты, использование агрегатных функций KVC (Key Value Coding).

Выполнение запросов и результаты выборки. Faulting.

 Саму лекцию, а также ее слайды на английском языке можно получить через iTunes с названием “12. Documents and Core Data”.

Русский неавторизованный конспект лекции 12, хронометрированный через каждые 5 минут, представлен в PDF — файлах.

Лекция 12 CS193P Fall 2013 -Winter 2014.pdf

Stanford CS 193P iOS 7 Лекция 11 — UITableView и iPad (UISplitViewController, Popover)

Screen Shot 2015-02-17 at 11.19.32 PM

 Лекция 11 начинается с введения в TableView, ее стилей и элементов, с того, как заполняются ее ячейки путем «закачки» данных ( data sources), как пользователь может взаимодействовать с этой таблицей с помощью делегатов ( delegate ). Рассматриваются  replace и push segues, а также table spinners для refresh control.

Вторая теоретическая часть посвящена созданию универсальных (universal) приложений с добавлением отдельной storyboard и функциональности для iPad, а также специфических для iPad Сontrollers таких, как UISpliViewController и Popovers.

Практическая часть лекции демонстрирует как строится универсальное приложение с использованием  TableViewController и NavigationСontroller для iPhone и с использованием TableViewController и UISplitViewController для iPad. Хотя методы делегата UISplitViewController считаются самыми трудоемкими и обременительными во всем iOS, профессор нашел хитроумный способ как сделать их легкими и понятными. Универсальное приложение связано с просмотром фотографий с Flickr. Поэтому в конце лекции профессор Пол Хэгарти показывает другой способ получения данных с сервера Flickr путем создания собственной очереди и возвращения в main queue при работе с UI, используя  GCD или Grand Central Dispatch. Это более изящный способ, чем URL session, обсуждаемая в предыдущих лекциях.

Код для демонстрационного примера Shutterbug этой лекции доступен  здесь

 Саму лекцию, а также ее слайды можно получить через iTunes с названием “11. Table View and iPad”.

Русский неавторизованный конспект лекции 11 представлен в PDF файлах:

Лекция 11 CS193P Fall 2013 -Winter 2014 1.pdf (0 - 10 минута)

Лекция 11 CS193P Fall 2013 -Winter 2014 2.pdf ( 10 - 20 минута)

Лекция 11 CS193P Fall 2013 -Winter 2014 3.pdf ( 20 - 30 минута)

Лекция 11 CS193P Fall 2013 -Winter 2014 4.pdf ( 30 - 40 минута)

Лекция 11 CS193P Fall 2013 -Winter 2014 5.pdf ( 40 - 60 минута)

Лекция 11 CS193P Fall 2013 -Winter 2014 6.pdf ( 60 минута - конец)

Stanford CS 193P iOS 7 Лекция 10 — Блоки, Многопоточность, Scroll View

Лекция 10 начинается с введение в многопоточность, при этом уделяется  особое внимание тому, как блоки ставятся в очередь (которые затем выполняются на разных потоках) и как запустить длительные по времени задачи без блокировки пользовательского интерфейса  ( UI ) . iOS поддерживает различные APIs – если предыдущие версии этого курса делали акцент на API низкого C уровня, то в этом году появилось Objective-C API и последний в данном курсе предпочтителен.

Вторая часть теории посвящается Scroll Views, как их создать, как добиться скроллинга и zooming (изменения масштаба).

Оставшаяся часть лекции посвящена демонстрационному примеру, который покрывает обе теоретические части: многопоточность и  Scroll Views.

Код демонстрационного примера  «Imaginarium» для этой лекции можно найти на сайте здесь.

Лекция и слайда (английский язык) доступна на  iTunes название “10. Multithreading, Scroll View”.

Русский неавторизованный  конспект Лекции 10, хронометрированный через каждые 5 минут, доступен на

Лекция 10 CS193P Fall 2013 -Winter 2014 1.pdf

Лекция 10 CS193P Fall 2013 -Winter 2014 2.pdf

Лекция 10 CS193P Fall 2013 -Winter 2014 3.pdf

Лекция 10 CS193P Fall 2013 -Winter 2014 4.pdf

Stanford CS 193P iOS 7 Лекция 9 – Анимация и Autolayout (авторазметка)

Лекция 9 начинается с продолжения демонстрации «Dropit» приложения — игры наподобие «Тетрис». Эта демонстрация была начата на прошлой лекции.

Оставшаяся часть лекции посвящена механизму Авторазметки (Autolayout) пользовательского интерфейса и различным способам определения «ограничений» (constraints). Возможности «очень сообразительной» системы Авторазметки показаны в короткой демонстрации  «Attributor Stats».

Код  этой лекции для «DropIt Attach» и «Attributor Stats» доступен  здесь.

Лекция и слайды на английском языке можно получить на iTunes название “9. Animation and Autolayout”.

Русский неавторизованный  конспект Лекции 9, хронометрированный через каждые 5 минут, доступен на

Лекция 9 CS193P Fall 2013 -Winter 2014 1.pdf (0 - 30 минута)

Лекция 9 CS193P Fall 2013 -Winter 2014 2.pdf (30 - 50 минута)

Лекция 9 CS193P Fall 2013 -Winter 2014 3.pdf (50 - конец)

Stanford CS 193P iOS 7 Лекция 8 – Протоколы, Блоки и Анимация

Screen Shot 2015-02-17 at 11.32.48 PMЛекция 8 начинается с очень большой теоретической части.

Протоколы — это способ взаимодействия между не взаимносвязанными проектами, в iOS в основном используются для делегирования функционала (delegates) и «подкачки данных»  (data sources). Протоколы декларируют, какие свойства и методы могут и должны существовать в другом классе, чтобы быть доступны декларирующему протоколы классу.

Блоки (blocks) инкапсулируют куски кода, которые могут передаваться как объекты. Специальное внимание следует уделять коду внутри блоков, который нуждается в доступе к переменным и объектам за пределами блока.

Анимация views может быть выполнена путем анимации их свойств напрямую или  – новое в iOS 7 – на основе «физики» объектов. Если анимируются свойства view, вам необходимо указать время анимации и конечное состояние свойств объекта. Для динамической анимации вы определяете «физические свойства» view и действующие на него силы, возможно, со стороны других views.

Конец лекции — это демонстрация, объясняющая динамическую анимацию более детально на примере игры типа «Тетрис».

Код приложения Dropit для этой лекции доступен  здесь.

Сама лекция, а также слайды на английском языке доступны через iTunes called “8. Protocols, Blocks, and Animation”.

Русский неавторизованный конспект лекции 8, хронометрированный через каждые 5 минут, представлен в PDF — файле.

Лекция 8 CS193P Fall 2013 - Winter 2014 All.pdf

Stanford CS 193P iOS 7 Лекция 7 – Views и жесты

Теоретическая часть Лекции 7 описывает как можно рисовать внутри views с помощью кода и как использовать различные жесты, воспринимаемые этими views. В конце лекции представлена большая и основательная демонстрация «Super Card», показывающая использование всех теоретических приемов рисования и управления жестами.

Код лекции доступен здесь.

Лекция 7 вместе со слайдами на английском языке доступна на  iTunes название “7.Views and Gestures”.

Русский неавторизованный конспект лекции 7, хронометрированный через каждые 5 минут, представлен в PDF — файле.

Лекция 7 CS193P Fall 2013-2014 All.pdf

Можно скачивать по частям:

Лекция 7 CS193P Fall 2013-2014 1.pdf

Лекция 7 CS193P Fall 2013-2014 2.pdf

Лекция 7 CS193P Fall 2013-2014 3.pdf

Лекция 7 CS193P Fall 2013-2014 4.pdf

Stanford CS 193P iOS 7 Лекция 6 – Полиморфизм Controllers и множественные MVCs в приложении, UINavigation, UITabBar

Лекция 6 начинается с короткой демонстрации того, как создавать абстрактные классы ViewController и использовать их для построения subclasses для конкретных карт (например, для игральных карт PlayingCardGameViewController.h, PlayingCardGameViewController.m).

Теоретическая часть лекции посвящена совместной работе множества MVCs на основе NavigationControlles и segues, возможности которых показываются в другой демонстрации.

Лекция заканчивается объяснением работы TabBarControllers.

Код для этой лекции представлен  для Attributor  здесь, а для Matchismo в Github.

Также коды демонстрационных примеров можно найти на сайте Stanford.

Лекция 6 вместе со слайдами на английском языке доступна на  iTunes название “6. Views and Gestures”.

Русский неавторизованный  конспект Лекции 6, хронометрированный через каждые 5 минут, доступен на

Лекция 6 CS193P Fall 2013-2014 1.pdf (0 -20 минута)

Лекция 6 CS193P Fall 2013-2014 2.pdf (20 - 30 минута)

Лекция 6 CS193P Fall 2013-2014 3.pdf (30 - 50 минута)

Лекция 6 CS193P Fall 2013-2014 4.pdf (50 -70 минута)

Stanford CS 193P iOS 7 Лекция 5 – «Жизненный цикл» View Controller

Лекция 5 начинается с описания работы элемента пользовательского интерфейса TextView и – что является новым в  iOS 7 – NSTextStorage и TextKit, затем следует короткое demo.

«Жизненный цикл» View Controller состоит из следующих шагов:

  • Создается экземпляр (gets instantiated) View  в 99% случаев из storyboard
  • Вызывается метод awakeFromNib, который можно было бы сравнить  init
  • Устанавливаются  outlets
  • Вызывается метод viewDidLoad , который может использоваться для основных установок (setups)
  • Определяется геометрия
  • Вызываются viewWillLayoutSubviews и viewDidLayoutSubviews
  • Вызываются viewWillAppear и viewDidAppear
  • Вызываются viewWillLayoutSubviews и viewDidLayoutSubviews
  • Вызываются viewWillDisappear и viewDidDisappear
  • Если «памяти» становится мало, то вызывается didReceiveMemoryWarning


Метод viewDidLoad используется в коротком demo, которое углубляет наши знания о строках с атрибутами NSAttributedString и NSMutableAttributedString.

Использование уведомлений  NSNotification возможно при включении и настройке определенных “радиостанций” на конкретные события. Если эти события происходят, то срабатывают заданные вами actions . Не забудьте “выключить радиостанцию”, когда она не нужна …

… все это показано в другом demo в конце лекции.

Код для demo этой лекции доступен  здесь.

Лекция 5 вместе со слайдами на английском языке доступна на iTunes название “5. View Controller Lifecycle”.

Русский неавторизованный  конспект Лекции 5, хронометрированный через каждые 5 минут, доступен на

Лекция 5 CS193P Fall 2013-2014 1.pdf

Лекция 5 CS193P Fall 2013-2014 2.pdf

Stanford CS 193P iOS 7 Лекция 4 – фреймворк Foundation и строки с атрибутами NSAttributedString

Лекция 4 по большей части теоретическая с маленькой демонстрацией в середине.

Она начинается с введения в объекты фреймворка Foundation и как создавать их, используя инициализаторы или специальные методы класса. Дело показывает, как использовать интроспекцию (introspection) для безопасной динамической типизации объектов.

Далее на примере массивов NSArray объясняется, что такое mutable (изменяемые) и   immutable (неизменяемые) объекты. Объясняются массивы NSArray и словари NSDictionary и как их использовать для хранения коллекций объектов, а также как их оттуда извлекать. Рассматриваются такие типы данных в Objective-C как  NSNumber, NSValue для чисел, NSDate  для дат, NSSet (упорядоченные, неупорядоченные) для множеств, Property lists, NSUserDefaults для постоянного хранения небольших объемов информации, UIColor для цветов, UIFont и UIFontDescriptor для фонтов, NSRange для диапазонов.

Новое для  iOS 7 — это  preferredFontForTextStyle для фонтов и дискрипторов фонтов.

Лекция заканчивается строками с атрибутами NSAttributedString

Код для лекции доступен  Github.

Видео Лекции 4, а также ее слайды  доступны на   iTunes название “4. Foundation and Attributed Strings”.

Русский неавторизованный конспект Лекции 4, хронометрированный через каждые 5 минут, доступен на

Лекция 4 CS193P Fall 2013-2014 1_new.pdf (0 - 20 минута)

Лекция 4 CS193P Fall 2013-2014 2_new.pdf (20 - 40 минута)

Лекция 4 CS193P Fall 2013-2014 3_new.pdf (40 - 60 минута)

Лекция 4 CS193P Fall 2013-2014 4_new.pdf (60 - 1 час 12 минута)

Stanford CS 193P iOS 7 — Домашнее задание 2

Screen Shot 2014-07-13 at 3.34.28 PMСодержание

Текст Домашнего задания на английском языке доступен на  iTunes в пункте  “Developing iOS 7 app:Assignment 2″На русском языке 

Задание 2 Matchismo 2 fall 2013.pdf

Пункт 1

Следуйте детальной инструкции на слайдах лекции (отдельный документ) для воссоздания последней версии Matchismo, которую мы построили на лекции (то есть вариант с множеством карт) и запустите его на симуляторе iPhone (iPhone Simulator) в Xcode 5. Не переходите к следующим шагам до тех пор, пока ваша карточная игра “на совпадение” не будет функционировать без ошибок и предупреждений.

 

Слайды  Лекции 3 содержат подробную пошаговую инструкцию для выполнения Домашнего задания 1 и для всех шагов, описанных выше. Следуя этой инструкции (если вы уже не сделали это в течение лекции), вы полностью выполните пункт 2 Домашней работы 2.

Читать далее