Основная проблема, с которой сталкивается программист при реализации какого-то управляющего элемента — выстраивание правильной логики работы этого элемента.
Читать полностью »
Рубрика «swift» - 42
Программирование состояний в UIControl
2016-12-01 в 13:49, admin, рубрики: ios development, objective-c, state machine, statefull, swift, UIControl, разработка под iOS, метки: UIControlSwift String Validating или простая валидация строк на соответсвие критериям
2016-11-24 в 7:29, admin, рубрики: iOS, swift, validations, разработка под iOSВсем доброго времени суток. Сегодня хочется поговорить про проблему валидации строк в IOS проектах. Думаю Вы как и я часто с этим сталкиваетесь, когда надо проверить, например, поле пароля на соответствие нескольким критериям.
Например:
— Длина пароля больше 6 символов
— Минимум одна цифра
— Буквы верхнего и нижнего регистра
Зачастую такое требование реализовываются примерно так:
func isPasswordCorrect(_ value:String) -> Bool {
// code for check length, number exist, uppercase and lowercase chars
}
Просто. Функция работает, пароль проверяется. Все довольны.
Дальше если нам надо проверить поле email на корректность, мы также пишем функцию, например:
func isEmailCorrect(_ value:String) -> Bool {
// code for check length, number exist, uppercase and lowercase chars
}
И так далее.
По росту проекта функций с такими проверками становится все больше и больше. При создании нового проекта нам надо или начинать все сначала или копировать эти функции с прошлого проекта. Не очень удобно. Один из вариантов решения под катом.
Читать полностью »
Гедоммист и ближайшие соседи
2016-11-23 в 16:43, admin, рубрики: swift, разработка игр, разработка под iOS, триангуляция
Гедоммист (в Древнем Риме) — человек, получающий кайф от программирования.
Увлечению программированием сопутствуют опасности — антисанитария, забытые дети, служебные выговоры, сбежавшее молоко или летящий в висок женский сапог.
Помню об этом, одолевая манящие сложностью алгоритмы.
И хочу рассказать об одной бесполезной задаче, которую я решал неделю в полном экстазе. Задача родилась благодаря 3aicheg, чей комментарий дал мне идею для игры под iOS (вижу Ваши глаза, Шо опять?). Смысл в том, чтобы сделать match game на нерегулярной сетке с гравитацией.
Кстати, если вы думаете, что рассказывая здесь о своем бесплатном приложении, можно получить мировую славу и купить яхту, то вот таблица
| Рейтинг статьи | Просмотров статьи | Просмотров видео | Загрузок |
| +30 | 20 000 | 5 000 | 18 |
| -2 | 2 500 | 2 000 | 14 |
И потому я восхищаюсь бескорыстными авторами Хабра (особенно теми, кто владеет русским слогом). Теперь к делу! А дело такое…
Читать полностью »
Симметрическая разность возможностей Swift и Objective-C
2016-11-22 в 9:58, admin, рубрики: iOS разработка, objective-c, swift, Блог компании Аркадия, возможности, разработка под iOS, сравнение
В этой статье я расскажу о различии возможностей, которые предоставляют iOS-разработчикам языки Swift и Objective-C. Безусловно, разработчики, которые интересовались новым языком от Apple, уже видели немало подобных статей, поэтому я решил акцентировать внимание на тех отличиях, которые действительно влияют на процесс разработки и на архитектуру приложения. То есть, те отличия, которые следует знать, чтобы использовать язык максимально эффективно. Я попытался составить наиболее полный список, удовлетворяющий этим критериям.
Кроме того, рассказывая о новых возможностях, которые Swift привнёс в разработку, я постарался не забыть упомянуть то, что он потерял по сравнению с Objective-C.
Для каждого пункта я попытался кратко изложить суть отличия, не вдаваясь в детали, а примеры кода — наоборот сделать подробными. В них я прокомментировал все нюансы, даже те, которые не имеют непосредственного отношения к рассматриваемому отличию.
На момент написания статьи текущая версия Swift — 3.0.1.
Как еще использовать type safety в целях улучшения API
2016-11-13 в 16:08, admin, рубрики: cocos2d, Fiber2D, swift, swift 3, type safety, математика, приёмы, разработка под iOS, Разработка под OS X, строгая типизация, метки: swift 3Всем привет! Я — lead developer cocos2d-objc. Сейчас мы находимся в процессе портирования на Swift. Я планирую освещать процесс разработки, рассказывать архитектурные решения и т.д. Пока что проект еще на proof-of-a-concept стадии, поэтому сегодня я расскажу только о маленьком приёме, который, как я считаю, сделал нашу математическую библиотеку чуть лучше. Если интересно — прошу под кат.

Читать полностью »
Первая работа, или как не надо разрабатывать под iOS
2016-11-11 в 10:33, admin, рубрики: ios development, iOS разработка, swift, разработка под iOSВ данной статье я попытаюсь рассказать о нетривиальных проблемах, с которыми может столкнуться начинающий разработчик. Если Вы, уважаемый читатель, уже работаете в этой сфере, то вряд ли почерпнете для себя что-то новое, но если Вы только учитесь или делаете свои первые шаги, то некоторые из этих советов могут вам помочь. Они мало будут касаться языка и больше относятся к каким-то общим вещам, связанным с процессом разработки. Если статья окажется не банальщиной, то я буду пробовать писать подобные статьи на тему каких-то конкретных задач.
Читать полностью »
6 концепций функционального программирования. Польза и примеры использования
2016-11-06 в 7:38, admin, рубрики: C, haskell, objective-c, swift, Программирование, разработка под iOS, функциональное программированиеДоброго времени суток! Меня зовут Иван Смолин, я разработчик мобильных приложений на платформе iOS. Сегодня предлагаю вам окунуться в мир функционального программирования. Статья носит по большей части теоретический характер, нежели практический. В ней я постараюсь дать определения основным понятиям функционального программирования и покажу примеры реализации на C, Objective-C, Swift, Haskell.
Функциональное программирование — это парадигма программирования, которая акцентируется на вычислении через функции в математическом стиле, неизменяемость, выразительность и уменьшение использования переменных и состояний (ссылка).
Существует 6 основных концепций:
- концепция первого класса и функций высшего порядка
- концепция чистых функций
- концепция неизменяемого состояния
- концепция опциональности и сопоставления с образом
- концепция ленивости и бесконечных структур данных
- концепция лямбда-исчислений
Enums + Associated Values = Swift
2016-11-02 в 10:30, admin, рубрики: enum, ios development, mobile development, redmadrobot, swift, swift 3, Блог компании REDMADROBOT, разработка мобильных приложений, разработка под iOSSwift — значит быстрый. Быстрый — значит понятный, простой. Но достичь простоты и понятности непросто: сейчас в Swift скорость компиляции так себе, да и некоторые моменты языка вызывают вопросы. Тем не менее возможность перечислений (enum'ов), про которую я расскажу (associated values — присоединяемые значения) — одна из самых крутых. Она позволяет сократить код, сделать его понятнее и надёжнее.
Парсинг JSON — это минное поле
2016-10-31 в 18:45, admin, рубрики: json, php, python, swift, Анализ и проектирование систем, Блог компании Mail.Ru Group, никто не читает теги, стандарты
JSON — это стандарт де-факто, когда заходит речь о (де)сериализации, обмене данными в сети и мобильной разработке. Но насколько хорошо вы знакомы с JSON? Все мы читаем спецификации и пишем тесты, испытываем популярные JSON-библиотеки для своих нужд. Я покажу вам, что JSON — это идеализированный формат, а не идеальный, каким его многие считают. Я не нашёл и двух библиотек, ведущих себя одинаково. Более того, я обнаружил, что крайние случаи и зловредная полезная нагрузка могут привести к багам, падениями и DoS, в основном потому, что JSON-библиотеки основаны на спецификациях, которые со временем развиваются, что оставляет многие вещи плохо или вообще не задокументированными.
2. Тестирование парсинга
2.1. Структура
2.2. Числа (Numbers)
2.3. Массивы
2.4. Объекты
2.5. Строки
2.6. Двойственные значения RFC 7159
3. Архитектура тестирования
4. Результаты тестирования
4.1. Полные результаты
4.2. C-парсеры
4.3. Objective-C-парсеры
4.4. Apple (NS)JSONSerialization
4.5. Freddy (Swift)
4.6. Bash JSON.sh
4.7. Другие парсеры
4.8. JSON Checker
4.9. Регулярные выражения
5. Контент парсинга
6. STJSON
7. Заключение
8. Приложение


