Полезности для перечитывания

FlatMap против nil

Если функция (метод или инициализатор) может вернуть nil, а мы будем использовать эту функцию в качестве преобразователя в .map, то можно сразу отсеять элементы nil и вернуть не опциональные элементы

Вызовы Event.init могут вернуть nil, а flatMap на этих объектах удалит любые значения nil, поэтому на выходе мы получим объекты Event (не опциональные!)

Лог потоков

Вывод в консоль лога по потокам:

Консоль:




Reduce для Observible

Reduce (_: _ 🙂 создает сводное (накопленное) значение только тогда, когда завершается исходный наблюдаемый. Применение этого оператора к последовательностям, которые никогда не завершатся, не испускает ничего. Это частый источник путаницы и скрытых проблем

Опубликовано в Памятка Метки:

Обработка ошибок в Swift

Зачем все это нужно?

Обработка ошибок во время выполнения программы и самое главное – реакция приложения на эти ошибки – это хорошая практика для любого программного продукта. Согласитесь, если вы пользуетесь приложением и в какой-то момент оно без каких либо видимых проявлений “падает”,  – что вы подумаете  про разработчика? Думается – ничего хорошего. А ведь можно в коде добавить обработчики ошибок, и в читабельном формате сообщать пользователю что именно пошло не так. С одной стороны – это значительно повышает юзабилити приложения, с другой облегчает отладку при разработке.

Однако, ошибки не всегда нужно обрабатывать. Языковые функции  Swift позволяют избежать некоторых ошибок в целом. Как правило, если вы можете избежать возникновения ошибки, возьмите именно этот путь проектирования и разработки мобильного приложения iOS. Но если вы не можете избежать потенциального условия появления ошибки, то явная обработка – лучший вариант.

 

В этой статье я составлю памятку по работе с ошибками на языке программирования  Swift 3

Подробнее »

Опубликовано в Без категории

Тернарный условный оператор и оператор ??

Тернарный условный оператор

Проверку на выполнение условий можно записать со помощью условного оператора if else

Тут все просто – если батарейки сели – нужно их заменить, а если они в порядке – то можно и  использовать. Эту конструкцию можно записать в одну строку.

Эти два выражения абсолютно равнозначны.

Оператор ??

Оператор ?? применяется к опциональному значению optional, и если оно извлекается то в result вернется извлеченное значение. А если значение не извлекается, т.е. оно равно nil, то вернется значение defaultValue. Это сокращение следующей конструкции

 



Опубликовано в Iron ribbon, Фундаментальные основы Метки:

URL Schemes или как передать данные между iOS приложениями

Думаю, все разработчики мобильных iOS приложений в курсе, что из собственного приложения можно запускать сторонние приложения. Например можно запустить клиент Youtube, кликнув на ссылку на видео, или вызвать почтовый клиент если нажать на кнопку “написать письмо”. В конце концов – самый банальный пример – это открытие браузера при нажатии на гиперссылку. Подобное поведение реализуется путем добавления и настройки URL-схем в приложение. Более того, при помощи этого инструмента можно в операционной системе iOS зарегистрировать собственную URL-схему и использовать ее для передачи данных: т.е. реализовать запуск своего приложения из других приложений с заданными параметрами.

Подробнее »

Опубликовано в Реальные примеры, Уроки, Фундаментальные основы Метки: ,

LoadError – cannot load such file — nanaimo

LoadError – cannot load such file — nanaimo

Если при попытка установить какой либо pod у вас терминал выдает такую ошибку, то вот рецепт для ее устранения:

Удалить nanaimo

gem list | grep nanaimo //увидим nanaimo (0.2.3, 0.2.2)
sudo gem uninstall nanaimo -v 0.2.2

sudo gem uninstall nanaimo -> all
sudo gem install nanaimo
pod install -> наслаждайтесь. Все работает

 

 

Опубликовано в Iron ribbon Метки:

iOS plist преобразование в словарь

Задача

Нужно загрузить данные из plist файла, перевести эти данные в словарь (Dictionary) и использовать этот словарь для вывода таблицы. В итоге,  должно получится такое приложение:

Подробнее »

Опубликовано в Реальные примеры Метки: ,

Удалить одинаковые элементы из массива iOS на Swift 3

Задача

Нужно из массива удалить повторяющиеся элементы. При этом массив может содержать элементы любого типа.

Решение

Для удаления одинаковых элементов из массива следует написать универсальную функцию, которая принимает в качестве параметра аргумент типа “коллекция” и возвращает другой массив.

Внутри функции мы перебираем элементы исходного массива, и по одному проверяем содержание элемента в наборе added и если его там нет, до добавляем элемент в возвращаемый массив и в набор added. Как вы помните, в наборе не может быть двух одинаковых элементов, поэтому проверка на содержание в этом наборе является флагом добавления в возвращаемый массив.




Опубликовано в Iron ribbon, Фундаментальные основы Метки:

UITableView swipe to delete и другие возможности

Задача

Создать проект, в котором отображается таблица. По жесту swipe нужно открывать список кнопок с различными действиями. Например удалить строку в таблице.

Подробнее »

Опубликовано в Iron ribbon, Элементы UI Метки: ,

Глобальные переменные при программировании в iOS

В одном из комментариев на сайте, читатель поинтересовался каким образом следует работать с глобальными переменными. Он даже привел пример приложения, над которым он работает. Если я правильно понял, то это приложение опросник, которое по очереди задает вопросы, принимает ответы, суммирует результаты ответов и в конце выводит какой-то результат. Читатель сказал, что для каждого вопроса он использует отдельный контроллер, и соответсвенно хочет отловить ответы с каждого контроллера. Я не согласен с подобной реализацией такой задачи, но в любом случае изложу в данной статье несколько вариантов решения, которые я вижу. А также свой вариант реализации подобного опросника, при котором глобальная переменная с результатом и вовсе не понадобится.

Подробнее »

Опубликовано в Реальные примеры, Уроки, Фундаментальные основы

iOS Преобразование голоcа в текст на Swift 3

В 2016 году на WWDC Apple представила Speech framework, полезный API для распознавания речи. Speech является основой, которая используется Siri для распознавания речи. Если посмотреть повнимательней, то можно найти много фреймворков распознавания речи, доступных на сегодняшний день, но они либо очень дорого стоят, либо отвратительно работают. В этом уроке мы создадим iOS приложение  для преобразования речи в текст с помощью Speech.

Подробнее »

Опубликовано в Обработка данных, Реальные примеры, Уроки
Сайт размещается на хостинге Спринтхост