ВНИМАНИЕ ОБСУЖДЕНИЕ лекций и заданий этих курсов будет проводится на форуме Google Group Swift[ru].
Там можно задавать вопросы и выкладывать варианты заданий в Github или Dropbox.
ВНИМАНИЕ ОБСУЖДЕНИЕ лекций и заданий этих курсов будет проводится на форуме Google Group Swift[ru].
Там можно задавать вопросы и выкладывать варианты заданий в Github или Dropbox.
STANFORD UNIVERSITY: Разработка iOS 8 приложений с Swift CS193P
Лекцию на английском языке и слайды модно найти на iTunes название “2. More Xcode and Swift, MVC”.
Это продолжение: 2 — ая часть лекции (30 минута — 44 минута ), код для этой части на GitHub.
Начало: 1 — ая часть лекции (0 — 30 минут) — находится здесь, код для этой части на GitHub.
продолжение: 3 — ая часть лекции (Autolayout , MVC) (44 минута — конец ) находится здесь, код для этой части на GitHub.
Давайте заставим работать другие кнопки с операциями. Мы видим, что все они подсоединены к нашему
[js]
@IBAction func operate(sender: UIButton)
[/js]
Код для операции «x» повторим для всех остальных операций
Но это очень плохой код — масса кода дублируется, и люди решат, что мы ужасные программисты.
STANFORD UNIVERSITY: Разработка iOS 8 приложений с Swift CS193P
Лекцию на английском языке и слайды можно найти на iTunes название “2. More Xcode and Swift, MVC”.
Русскоязычный неавторизованный конспект лекции приводится ниже.
Вы также можете читать PDF-файл конспекта и использовать его offline
Начало: 1 — ая часть лекции (0 — 30 минут) — код для этой части на GitHub.
Продолжение: 2 — ая часть лекции (30 минута — 45 минута) здесь.
Продолжение: 3 — ая часть лекции (45 минута — конец) здесь.
Это лекция номер 2 и у нас две основные темы.

Начало: 1 — ая часть лекции (0 — 35 минут) можно найти здесь.
Давайте немного поговорим о связи пользовательского интерфейса, который мы только что создали, с нашим кодом. Мы хотим, чтобы код имел возможность «разговаривать» с пользовательским интерфейсом. Иначе как мы заставим цифры на кнопках, которые мы нажимаем при наборе числа», появиться на нашем дисплее, или как нам получить результат умножения, если мы нажали кнопку с заголовком «x»? Нам нужно научиться разговаривать с нашем интерфейсом.
Как мы будем это делать? Во-первых, нам нужно, чтобы и код ( файл ViewController.swift ), и интерфейс (файл Main.storyboard) появились на экране в Xcode одновременно, так как мы собираемся их связывать.
Как всегда ежегодная Лекция 1 — это общее введение в курс и обзор iOS, MVC и на этот раз Swift.
… и опять Paul Hegarty подчеркивает важность знакомства с объектно-ориентированным программирование как обязательное требование к курсу. Этот курс не для начинающих.
В обзоре iOS Paul Hegarty кратко объясняет различные слои iOS. Начиная с
Вторая часть лекции посвящена демонстрации, показывающей:
Лекция и слайды (английский язык) как всегда доступны на iTunes название “1. Logistics, Overview of iOS”.
Русский неавторизованный конспект Лекции 1 приводится ниже.
Вы также можете читать PDF-файл конспекта и использовать его offline
Начало: 1 — ая часть лекции (0 — 35 минут)
Продолжение: 2 — ая часть лекции (35 минута — конец) находится здесь.
Добро пожаловать на курс CS193P Winter 2015. Это лекция номер 1.
Я немного расскажу о чем этот курс. Дам короткое упоминание о требованиях для этого курса, что очень важно. Затем быстрый обзор составных частей iOS. Я думаю большинство людей знают о чем этот курс. Мы собираемся окунуться в большой демонстрационный пример ( это старый демонстрационный пример), которому я хочу посвятить 2 дня. В течение этих двух дней я введу вас в среду разработки Xcode и язык программирования Swift, который вы должны выучить для разработки на iOS.
Лекция 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.
Русский неавторизованный конспект лекции 12, хронометрированный через каждые 5 минут, представлен в PDF — файлах.
Лекция 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 этой лекции доступен здесь
Русский неавторизованный конспект лекции 11 представлен в PDF файлах:
Лекция 10 начинается с введение в многопоточность, при этом уделяется особое внимание тому, как блоки ставятся в очередь (которые затем выполняются на разных потоках) и как запустить длительные по времени задачи без блокировки пользовательского интерфейса ( UI ) . iOS поддерживает различные APIs – если предыдущие версии этого курса делали акцент на API низкого C уровня, то в этом году появилось Objective-C API и последний в данном курсе предпочтителен.
Вторая часть теории посвящается Scroll Views, как их создать, как добиться скроллинга и zooming (изменения масштаба).
Оставшаяся часть лекции посвящена демонстрационному примеру, который покрывает обе теоретические части: многопоточность и Scroll Views.
Код демонстрационного примера «Imaginarium» для этой лекции можно найти на сайте здесь.
Лекция и слайда (английский язык) доступна на iTunes название “10. Multithreading, Scroll View”.
Русский неавторизованный конспект Лекции 10, хронометрированный через каждые 5 минут, доступен на
Лекция 9 начинается с продолжения демонстрации «Dropit» приложения — игры наподобие «Тетрис». Эта демонстрация была начата на прошлой лекции.
Оставшаяся часть лекции посвящена механизму Авторазметки (Autolayout) пользовательского интерфейса и различным способам определения «ограничений» (constraints). Возможности «очень сообразительной» системы Авторазметки показаны в короткой демонстрации «Attributor Stats».
Код этой лекции для «DropIt Attach» и «Attributor Stats» доступен здесь.
Лекция и слайды на английском языке можно получить на iTunes название “9. Animation and Autolayout”.
Русский неавторизованный конспект Лекции 9, хронометрированный через каждые 5 минут, доступен на
Лекция 8 начинается с очень большой теоретической части.
Протоколы — это способ взаимодействия между не взаимносвязанными проектами, в iOS в основном используются для делегирования функционала (delegates) и «подкачки данных» (data sources). Протоколы декларируют, какие свойства и методы могут и должны существовать в другом классе, чтобы быть доступны декларирующему протоколы классу.
Блоки (blocks) инкапсулируют куски кода, которые могут передаваться как объекты. Специальное внимание следует уделять коду внутри блоков, который нуждается в доступе к переменным и объектам за пределами блока.
Анимация views может быть выполнена путем анимации их свойств напрямую или – новое в iOS 7 – на основе «физики» объектов. Если анимируются свойства view, вам необходимо указать время анимации и конечное состояние свойств объекта. Для динамической анимации вы определяете «физические свойства» view и действующие на него силы, возможно, со стороны других views.
Конец лекции — это демонстрация, объясняющая динамическую анимацию более детально на примере игры типа «Тетрис».
Код приложения Dropit для этой лекции доступен здесь.
Сама лекция, а также слайды на английском языке доступны через iTunes called “8. Protocols, Blocks, and Animation”.
Русский неавторизованный конспект лекции 8, хронометрированный через каждые 5 минут, представлен в PDF — файле.