Обновить
32K+

Xcode *

Интегрированная среда разработки ПО

3,5
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Подключение SQLite к мобильному приложению iOS через FMDB на Xcode используя Swift

Время на прочтение7 мин
Охват и читатели19K
Столкнувшись с задачей подключить SQLLite к своему мобильному приложению iOS через FMDB, я не нашел ни одного актуального гайда на русском языке. И тем более для Swift. В этой статье я постараюсь этого исправить.

В этом гайде будут использоваться файлы с objective-c, поэтому не надо ждать порта FMDB на Swift.

Скачать FMDB можно тут.

В FMDB три main class:

FMDatabase — представляет данных SQLite. Используется для выполнения SQL-операторов.
FMResultSet — представляет результаты выполнения запроса по FMDatabase.
FMDatabaseQueue — если вы хотите, чтобы выполнялись запросы и обновления на несколько потоков, можно использовать этот класс. Пример в 8 пункте.

Прежде чем вы сможете взаимодействовать с базой данных, она должен быть открыта. Открытие завершиться с ошибкой, если нет достаточных ресурсов или разрешения на открытие и/или создания базы данных.

if (![db open]) {
    [db release];
    return;
}

Шаги:
Читать дальше →

Реализуем свой dropDown ViewController (aka iOS 8 Mail app) в 200 строк

Время на прочтение7 мин
Охват и читатели14K
Еще с beta версии iOS 8 мне очень понравилась эта новая фича приложения почты: при создании нового письма можно просто смахнуть это окно вниз и продолжить работу на предыдущем экране. Не уверен, насколько эта фича оказалась полезной конкретно в этом приложении, но идея то отличная! В тот же вечер я сел делать подобную штуку, и таки сделал свой велосипед, и на время забыл об этом.

Недавно мне понадобился похожий функционал. Не захотев брать свое старое решение, и не найдя готовой реализации, которая бы мне понравилось, было решено написать свое. Что из этого получилось, с какими трудностями пришлось столкнуться, и что нового было вынесено — под катом.

image
Читать дальше →

Магия IBDesignable или расширяем функциональность Interface Builder в Xcode

Время на прочтение4 мин
Охват и читатели31K


Interface Builder в Xcode с некоторого времени экономит мне много времени в работе по стандартному лайауту элементов интерфейса и иногда помогает в задаче прототипирования. С версии 6 в Xcode добавили возможность рендера кастомных вьюшек, помеченных атрибутом IBDesignable, а также отображение в билдере полей класса, помеченных атрибутом IBInspectable.

С версии Xcode 7 этой фичей стало более-менее возможно пользоваться, поэтому мне захотелось проверить её возможности.

Почитать про IBDesignable/IBInspectable можно тут и тут.
А саму статью можно прочитать здесь.

Создание приложения ToDo с помощью Realm и Swift

Время на прочтение17 мин
Охват и читатели66K
С развитием смартфонов в последние годы было разработано много инструментов, чтобы упростить жизнь разработчикам, обеспечив их максимальной производительностью и качеством. Занимать лидирующие позиций в App Store сегодня не простое задание. А научить ваше приложение масштабироваться еще сложнее. Когда приложением пользуются миллионы пользователей, вы должны следить за приложением и при необходимости выполнять все операции моментально. Поэтому одной из проблем, с которой сталкиваются многие разработчики, является Database. Она действительно вызывает сильную головную боль для каждого из нас, и я думаю, что сегодня у вас есть только два варианта: SQLite и Core Data. Я был большим поклонником Core Data и его способностью работать с записями и сохраняющимися данными, но я понял, что впустую трачу много времени, работая с ним при разработке приложений. Недавно, я столкнулся с Realm, новой лучшей заменой SQLite и Core Data.

Realm and Swift
Читать дальше →

iOs Debug Master

Время на прочтение6 мин
Охват и читатели22K
Однажды я почти полностью отказался от мышки для навигации по Xcode и вполне этому рад. Следующий шаг — это отказ от визуальных средств управления отладчиком. Зачем? — Увеличиваем возможности, уменьшаем время дебага, тратим меньше калорий для перемещения тяжеленькой ручишки (нам калории нужны, чтобы головой работать) и тем самым провоцируем меньше туннельного синдрома.


Читать дальше →

Запускаем iOS приложения из консоли на девайсе и симуляторе

Время на прочтение7 мин
Охват и читатели28K
В статье будет кратко описано, как собрать приложение консольными командами и запустить на реальном девайсе и симуляторе без какой-либо надобности открывать xcode для этого.

В общем, стоит начать с того, что в моей компании имеется отдел ios разработки в составе > 10 человек, которые работают над пачкой приложений. Для автоматизации рутинной работы нам пришлось развернуть CI сервер (пока самописный, ввиду особых исторических причин (ну как у всех), планируется миграция на jenkins). К рутинным вещам я отношу — сборку проектов, запуск тестов (если, конечно, вы их пишете), создание ипашек для тестеров и для выкладки в app store. В общем, хотелось чтобы по нажатию кнопочки или по хуку в гите всё это начинало работать. Пока у нас всё работает по нажатию кнопки разработчиком, про гит пока только в планах. В данной статье я только затрону тему компиляции проекта и упаковку его в ipa файла. Функционал запуска проектов на девайсах на стороне CI сервера еще находится в стадии разработки, а вот сам процесс упаковки уже давно в «бою», может кому пригодиться.

Что планируем:

  • соберем приложение и запустим на симуляторе
  • соберем ipa и запустим на реальном девайсе
  • соберем ipa для выкладки на маркет
  • немного подэбажим ошибки сборки
Читать дальше →

Дайджест новостей для iOS-разработчиков

Время на прочтение2 мин
Охват и читатели7.3K
Уильяму Генри Гейтсу III 60 лет. Да-да, так его зовут полностью. Хотите проникнуться духом того времени — прочтите «Сотворение Microsoft». Сердечно поздравляем и желаем долгих лет и новых рабочих свершений. Тем временем в App Store появляется категория Shopping. Разработчики получили соответствующее письмо.



Читать дальше

Три наиболее значимых нововведения с приходом watchOS2

Время на прочтение6 мин
Охват и читатели10K
Итак, о чем действительно стоит упомянуть при переходе к разработке на watchOS2 — это следующие три пункта:

  • WKInterfacePicker
  • Complications
  • WCSession

В данной статье я коротко расскажу о каждом из них.
Читать дальше →

Подборка полезных статей для iOS-разработчиков за текущую неделю

Время на прочтение2 мин
Охват и читатели7.7K
Надеюсь, все успешно обновились до 9.0.2 и El Capitan. Уже успело подзабыться с презентации, что же там такого нового. Тем приятнее находить изменения. Сегодня вечером встреча Cocoa Heads Moscow. Большая программа. Не забывайте.
Кстати, 29 октября планируется ежегодная встреча разработчиков LLVM. Возможно там будет что-нибудь сказано про Swift и то, когда он станет Open-Source.



Читать дальше

В Китайском AppStore были обнаружены 39 заражённых приложений из-за модифицированной версии Xcode

Время на прочтение1 мин
Охват и читатели11K
image

Фирмой Palo Alto Networks был обнаружен malware в iOs. Он попал через модифицированную версию инструмент Xcode от Apple — XcodeGhost.

Читать дальше →

Симулятор призрака. От идеи стать программистом к готовой игре на IOS

Время на прочтение11 мин
Охват и читатели19K
Прошло около 10 месяцев с тех пор, как я решил учить программирование, поскольку текущая работа инженером тех-поддержки попросту нагоняла апатию и ни к чему не вела. А чтобы сделать процесс обучения максимально интересным, я решил написать игру для мобильных устройств. Далее речь пойдёт о том, что конкретно я пытался создать, и с какими трудностями приходиться сталкиваться новичкам.



Здесь есть один важный момент для начинающих разработчиков, которые горят желанием связать свою жизнь с миром ИТ-индустрии. Вы должны определить для себя максимально комфортную стратегию самообразования. Одному нужно регулярно решать практические задания, другой не сдвинется с места, пока не разберётся в тонких нюансах теории. Ведь подавляющее большинство, не смотря на чистоту своих намерений, имеют основную работу, семью, друзей, хобби… И так или иначе, весь этот рутинный водоворот влияет на время и качество вашего обучения. И может привести к тому, что вы забросите свои ежедневные занятия в долгий ящик и больше никогда к ним не вернётесь.

Лично для себя я определил, что максимально комфортный способ разработки, это когда я могу видеть целостную наглядную картину своего результата в виде игры, или приложения. В качестве платформы я выбрал IOS и сопутствующий язык Apple — objective-C. Для игрового фреймворка отлично подошел cocos2d-iphone. Он простой, бесплатный, а так же имеет огромное количество примеров и туториалов в интернете.

Пришло время рассказать о самой игре, как она выглядела в моих фантазиях, и что нужно было сделать для её реализации.
Читать дальше →

Cколько инсталлов нужно для ТОП App Store

Время на прочтение3 мин
Охват и читатели19K
Совсем недавно я уже писал о том, сколько нужно получить загрузок для ТОП-10 бесплатных игр App Store. Сегодня хочу продолжить эту тему и рассказать о более значительных рубежах в рейтингах онлайн-магазина от Apple, а также о том сколько органических инсталлов можно получить с самых высоких позиций. Мне правда, так и не удалось поднять на первое место общего ТОПа, но я был к этому очень близок, и помешала мне только компания Viber. В общем дело было так:

На 31 августа был запланирован релиз моей игры 1-2-3-4 Premium. В российском App Store она стала видна на день раньше в 21:00 по московскому времени, и тут же началась активная PR-кампания. В ТОП-10 игр удалось попасть уже к 14:00, и для этого, как и в прошлый раз мне понадобилось около 6000 загрузок, которые, правда, на этот раз удалось сделать менее чем за сутки, потратив около 500 долларов.

Читать дальше →

Подготовка приложения для iOS 9

Время на прочтение3 мин
Охват и читатели31K
9 сентября выйдет новый релиз iOS и OS X. Времени остается все меньше, и многие разработчики уже оптимизировали свои приложения для работы на новых ОС. Тем, кто этого ещё не сделал, предлагаю коротко рассмотреть, что необходимо для поддержки iOS 9.


Читать дальше →

Ближайшие события

Дайджест полезных материалов для iOS-разработчиков

Время на прочтение1 мин
Охват и читатели7.3K
Пока все с нетерпением ждут новый iPhone и стабильную версию iOS 9, которые будут представлены на презентации Apple 9 сентября, мы собрали для вас подборку интересных материалов этой недели.

Кстати, про iOS 9. Начиная с нее, Apple будет дополнительно предупреждать пользователя при попытке установить Enterprise-приложение напрямую, без MDM. Такое вот небольшое стимулирование. Небольшое на первом шаге. Внутренний параноик говорит: «Сейчас у Apple нет полной связки для доставки Enterprise, Apple не контролирует цепочку, но может начать».



Читать дальше

Дайджест полезных материалов для iOS-разработчиков

Время на прочтение1 мин
Охват и читатели7.2K





В фары добавляются следящие элементы для предотвращения столкновения. Дно отслеживает разметку, чтобы автомобиль не ушел с дороги. В автомобиле все больше электронного управления. Wired показал удаленное управление Jeep. Хотя водитель был предупрежден, ему явно было не по себе. Больше внимания безопасности, товарищи. Больше внимания.

Читать выпуск

Генерируем номер версии и билда на иконке iOS приложения

Время на прочтение2 мин
Охват и читатели12K


В процессе разработки приложение тестируется, и бывает, что нужно знать, какая версия приложения и с каким номером сборки у тестировщика/другого участника процесса установлена. Например, баг уже исправлен, а человек новый билд ещё не поставил и сетует, что ничего не исправлено.

Зачастую эту информацию прячут где-нибудь, например, в приложении Яндекс.Маркет, нужно ткнуть в раздел Кабинет и выбрать пункт «О приложении»:

Пример

Для удобства (или потому, что этот экран ещё не готов), можно вынести эту полезную информацию прямо на иконку приложения.
Читать дальше →

iOS Инструменты разработчика

Время на прочтение26 мин
Охват и читатели36K

Вступление


Всем привет, меня зовут Григорий, последние 5 лет занимался программированием под iOS. Сейчас решил сменить сферу деятельности и ударился в веб, но чтобы добро не пропадало, хочу поделиться с сообществом своими наработками, накопившимися за это время. Библиотеки выложены на GitHub и добавлены в CocoaPods. Инструкции по установке и использованию вы сможете найти по ссылкам на GitHub, здесь же будет краткое описание.

Минимальная поддерживаемая версия — iOS 6.0.
Читать дальше →

Организация Objective C класса

Время на прочтение7 мин
Охват и читатели15K
В предыдущей статье я затронул тему структуры проекта. На мой взгляд, это первый шаг с которого начинается красивый код.
Второй шаг это правильная организация файлов самого класса.

Кому-то статьи про Obj C могут показаться архаизмом, но пока мы не планируем повсеместный переезд на Swift. Это скорее плавное замещение в новых проектах. Все еще остается огромная кодовая база на Objective C которую необходимо поддерживать.
К тому же, на Swift еще не накоплено достаточно опыта в больших проектах.

В качестве антипримера предлагаю рассмотреть WYPopoverController.
Представим, что он пришел к нам не из пода, а это наш собственный класс написанный в эпоху буйной юности.

В заголовочном файле 279 строк, в файле реализации 2948 строк.
Привет, ⌘F, я не скучал.
Читать дальше →

Как победить Excluded Constraints с помощью RubyGem

Время на прочтение3 мин
Охват и читатели4.9K


Во время разработки iOS/OSX-приложений непременно приходится использовать Interface Builder и Auto Layout. В приложениях со сложными интерфейсом и в приложениях, находящихся в разработке достаточно давно, часто появляется проблема с большим количеством «исключенных констрейнов». Storyboard грузится необоснованно долго, а во время перехода между сценами можно успеть сходить за кофе.

Но, казалось бы, интерфейс всех контроллеров такой же незамысловатый, как и в релизе полгода назад. Что же случилось? Тем, кто использовал Size Classes, сразу понятно, что интерфейс — не такая простая штука, как кажется. Он ведет себя по-разному в разных ориентациях и на разных дисплеях. Делает он это, потому что некоторые constraints применяются только в определенной ситуации.

Это значит, что в остальных ситуациях эти constraints не используются. У Xcode Interface Builder есть особенность, которая помогает при разработке сложных интерфейсов и мешает при разработке простых. Если добавить constraint к какому-то UIView и затем удалить его из Xcode Inspector (а чаще всего это — самый удобный путь), Xcode не удалит его, а лишь сложит в список неиспользуемых на случай, если понадобится для другого дисплея или ориентации.

Иногда, если развернуть все группы constraints, можно ужаснуться происходящему в storyboard-файле:


Не хотите наблюдать подобное? Добро пожаловать под кат!
Читать дальше →

Удобная структура iOS проекта

Время на прочтение4 мин
Охват и читатели33K
В сети можно найти множество туториалов, обучающих работе со встроенными фреймворками и сторонними библиотеками для iOS. Но редко можно встретить статьи, рассказывающие об общих вещах. Таких, как, например, создание удобной структуры проекта.

Скорее всего, опытные разработчики давно пользуются этими приемами. Но я постоянно сталкиваюсь с проектами, которые делали, не соблюдая этих простых правил.
Читать дальше →