• В каких случаях отменнее применять SQLite, а в каких Core Data?

    kaspartus
    @kaspartus
    Я бы в начальный уровень знания Core Data включил:
    - Знание основных элементов Core Data стека
    - Знание возможностей фреймвока(писать, например, можно не только в базу)
    - Умение писать/читать
    - Работа с простейшими свзяками

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

    Потом советую прочесть про NSFetchedResultsController, но в начале лучше почитать примеры без них.

    А так есть книжка "Pro Core Data for iOS", на хабре даже есть перевод первых 4 глав: habrahabr.ru/post/198242
    Ответ написан
    Комментировать
  • Как сделать переключатель между UITableView и UICollectionView?

    kaspartus
    @kaspartus
    Ну тут на свой вкус.
    - Можно положить UITableView и UICollectionView на одну вьюху и просто менять альфу.(Тут думаю и так все понятно)
    - Можно сделать красивый переход(гуглить "custom transition ios 7"), но это может поломать порядок UIViewController, если они лежат в UINavigationController.

    Из общих моментов:
    - Я бы вынес реализацию всех делегатных методов в отдельный класс, это сильно повысит читаемость класса UIViewController, которому они будут принадлежать.( www.objc.io/issue-1/lighter-view-controllers.html )
    - В качестве переключателя я бы использозвал UISegmentedControl, находящийся в верхнем баре, но никто не мешает придумать, что-то свое.
    Ответ написан
    Комментировать
  • Как перенести скомпилированное приложение под iOS на iphone?

    kaspartus
    @kaspartus
    После покупки сертификата действия примерно такие
    Для дебага - используется большую часть времени, если хотим дебажить не на симуляторе:
    1. Подключаете железку
    2. В XCode в Organizer находите ее и жмакаете на кнопку "Use for development"
    3. Теперь там где можно выбрать тот или иной симулятор вместо Device появится реальное устройство, выбираем его для деплоя
    3.1 Тут XCode может написать про профили/сертификаты и предложит выкачать их - соглашаемся
    4. Запускаем

    Если необходимо собрать релизную версию, то
    1. Опять же выбираем железку
    2. Product -> Archive
    3. После сборки нас кинет в Organizer, там жмем на Distribute
    4. Выбираем что хотим сделать: Ad Hoc - чтобы посмотреть релизную версию перед отправкой в аппстор, AppStore - отправить свое гениальное творение в магазин.
    Ответ написан
    1 комментарий
  • Как сделать вложенные таблицы в iOS?

    kaspartus
    @kaspartus
    Достаточно популярная либа: https://github.com/OliverLetterer/SLExpandableTableView
    Ответ написан
    Комментировать
  • Мобильная разработка: в какую сторону расти?

    kaspartus
    @kaspartus
    И на iOS и на Android есть достаточно вакансий/проектов. Имеет смысл выбрать то, что интересней.

    На тему языков: это все тлен, языки учатся достаточно быстро, если есть некоторый опыт в каком либо другом. Основная проблема - освоиться с SDK.

    iOS:
    Если выбирать iOS, то я бы советовал сконцентрироваться на O-C, параллельно захватывая Swift. На самом деле общие концепции не поменяются, в целом все останется. Отдельно надо сказать, что джуном на свифте будет не так просто устроиться, если компания не начинает раз в полгода новое приложение, то приложение написано, а написано оно понятно на каком языке.

    Android:
    Опять же, более принципиально, что необходимо будет учить SDK, но предыдущий опыт в java будет однозначным плюсом.

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

    Будущее:
    Обе компании регулярно отчитываются о росте всевозможных долей устроиств/кол-ва активаций. Дела у всех идут хорошо, за каждой платформой куча фанатов, не думаю, что произойдет какой-либо перелом, и одна из компаний сможет одержать победу. Думаю, что при любом выборе, ваш личный доход будет скорее зависеть от вашего профессионализма, умения получше устроиться, а если вкратце - просто от вас.
    Ответ написан
    3 комментария
  • Удалят приложение из android маркета или нет?

    kaspartus
    @kaspartus
    История 12 года, но, насколько я знаю, принципиально ничего не изменилось: habrahabr.ru/post/137630
    Ответ написан
    Комментировать
  • Как лучше отфильтровать NSSDictionaty?

    kaspartus
    @kaspartus
    Я так понял, что в основном вопрос на тему выбора структуры сущностей. Для этого неплохо было бы увидеть сами запросы. Самое простое - это держать объект Предмет с полями: Название, Преподаватель, Кабинет/Место, Время начала, Продолжительность.

    Я бы напрямую биндил в сущности базы(с этой задачей отлично справится MagicalRecord), а далее уже фильтруем.

    Касательно фильтрации, как написал @morozovdenis, используется класс NSPredicate.

    Отдельно добавлю, что у любого фреймвока/либы для работы с базами уже наверняка есть встроенные возможности для фильтрации и сортировки, достаточно пробежаться по любому туториалу/докам.
    Ответ написан
    Комментировать
  • UIScrollView: как уложить текст/кнопки с сохранением их размера и местоположения?

    kaspartus
    @kaspartus Автор вопроса
    В итоге победил модифицировав вариант, где кнопки лежат на contentView и масштабируются вместе с самой картинкой(1 гифка).

    Решение:
    Подцепился через делегатный метод -(void)scrollViewDidZoom:(UIScrollView *)scrollView

    Там делаю трансформацию:
    btn.transform = CGAffineTransformMakeScale(1 / self.scrollView.zoomScale, 1 / self.scrollView.zoomScale);


    Думал что будет лагать, проверил на 100 кнопках - все работает идеально на третьей доске.

    p.s. обновил репу
    Ответ написан
    Комментировать
  • Насколько реально программировать в Xcode используя виртуализацию Vmware Mac OS?

    kaspartus
    @kaspartus
    Два года назад имел такой опыт.

    Виртуалка крутилась на средненьком ноуте на работе и на средненьком стационарнике дома. Эффект был один: прогать можно, но все начинало тормозить рано или поздно. Все сильно упирается в оперативу, так что жалеть ее на виртуалку не стоит, но при этом даже 2Гб она съедает без проблем, после чего лучше начать вырубать приложения, а лучше просто перезапустить виртуалку.

    Скажу так: если это вам для работы, то смело просите мак. Mac mini стоит 20-40к, для компании это копейки, а для вас +100500 к производительности и столько же в минус к геморою и потере нервов. Если работодатель экономит на спичках, то его лучше поскорее сменить, никаких радужных перспектив от него ждать не стоит.

    Отдельным моментом можно сказать, что скоро выходит новая версия операционки и в отличае от предыдущих ее лучше будет поставить, чтобы попробовать фичи с интеграцией йоси и макоси.
    Ответ написан
    1 комментарий
  • Какие подводные камни при использовании онлайн-конструктора приложений (iBuildApp etc.)?

    kaspartus
    @kaspartus
    Так надо соглашение читать, но вполне очевидным было бы, если приложение принадлежало вам.

    Еще про камни:
    - Плохая поддерживаемость, таких проектов море, и у каждого сообщество - два с половиной инвалида, вы потом не затащите никого этот проект править. Если возникают проблемы - опять же вы остаетесь один на один с поддержкой этой тулзы.
    - Отстает по возможностям от нативной библиотеки(скорее всего вы не смогли полностью оценить что можно реализовать, а что - нет), новые фичи после выхода новой оси будут появляться "спустя некоторое время".
    - Может лагать(пользователи привыкли, чтобы все было плавно и моментально отзывалось)

    Если денег мало, то непонятно что вы вообще хотите. Стоимость приложения состоит из 3 частей: разработка, дизайн, раскрутка. Слишком продешевив в любом из пунктов вы получите что-то невнятное, чем люди не захотят пользоваться/о чем не узнают.

    Если идеи стоящие и вы верите в успех, то возьмите кредит, или найдите спонсора.

    Совсем без денег ничего не выйдет, даже если вы найдете разраба - энтузиаста за долю, а дизайн вы вдвоем вымучаете в фотошопе, все равно деньги нужны будут на раскрутку.
    Ответ написан
    Комментировать
  • Как правильно подружить xib и storyboard для универсального приложения?

    kaspartus
    @kaspartus
    1. Ну самый простой но трудоемкий вариант держать два сториборда. Для ipad ~ipad после имени, но перед расширением.
    2. Можно попробовать держать один сториборд, там указать xibName.xib в сториборде, а на деле держать два варианта, для ipad опять же xibName~ipad.xib, по идее для доски он должен подцепить правильный xib, но я не пробовал.
    Ответ написан
    Комментировать
  • Как найти курсы программирования для начинающего IOS-разработчика в Киеве?

    kaspartus
    @kaspartus
    Не трогайте пока бекенд, алгоритмы и прочее. Не стоит распыляться по куче областей, на каждую из них потом сможете выделить время и целенаправленно проработать.

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

    Сто процентов должен быть наставник, который целиком продумает архитектуру приложения и будет выдавать небольшие задачи. Знаю, что такое частенько бывает: на джуниора спихивают недописанное особо никому не нужное приложение, и ему приходится потом ковыряться по колено в чужом коде. Потому не в коем случае это должна быть не поддержка существующего приложения, а если поддержка, то работа должна заключаться в написании отдельных модулей. Надо самостоятельно писать взаимодествие между частями приложения.

    Идеальный вариант: наличие наставника, который продумывает приложение, но не вытирает сопли по любому поводу, в совсем сложных вопросах готов все объяснить. Работа заключается в написании кучи небольших приложений разной тематики.
    Ответ написан
    1 комментарий
  • А есть ли апп под андроид, блокирующий участки экрана от нажатий?

    kaspartus
    @kaspartus
    Есть несколько способов:
    1. Отрубаем инет на планшете, нет инета -> банеры не грузятся.
    2. Есть всевозможные ad block в виде приложений. Можно их попробовать. Они просто фильтруют трафик. Они правда без рута вайфайный тафик не фильтруют вроде.
    Ответ написан
  • Откленение в аппстор магазине?

    kaspartus
    @kaspartus
    Ну в феврале удаляли само приложение vk. Поговаривают, что причина как раз в нарушении авторских прав.

    Если вы еще и сами файлы выкачиваете и позволяете ими делиться, то от этого лучше отказаться. А так скользкий вопрос, как я написал выше у вк самих не все так гладко. Я бы дал возможность прослушивать записи/кэшировать
    Ответ написан
    2 комментария
  • Как лучше хранить много текстовых данных в Android?

    kaspartus
    @kaspartus
    developer.android.com/reference/android/database/s...

    Если посмотреть на набор публичных методов, становится понятно, что android sdk предоставляет нам полноценную обертку над базой. Я бы не назвал это костылями.
    Ответ написан
    Комментировать
  • Как перенести provisioning profile i certificate на другой mac?

    kaspartus
    @kaspartus
    Так они все хранятся на яблочных серваках, просто выкачиваем:
    https://developer.apple.com/account/ios/certificat...

    Если не хочется по-простому, можно открыть Связку ключей(Keychain), найти все что надо, заэкспортить на одном и заимпортить на другом.
    Ответ написан
    Комментировать
  • Какие есть Objective-C репозитории приложений с грамотной структурой кода и паттернами?

    kaspartus
    @kaspartus
    К книжкам частенько идет репозиторий на гитхабе, можно посмотреть там. Еще есть cookbook'и, там есть готовые решения для кучи проблем.

    Если хочется углубиться в патерны, поищите какую-нибудь advanced книжку, там как раз и занимаются тем, что пытаются не просто сделать, а сделать правильно и читаемо, показывают приемы, которые не используют в туториалах из серии "лишь бы работало".
    Ответ написан
    1 комментарий
  • Как передать управление нажатием на объект в основной контроллер?

    kaspartus
    @kaspartus
    У вас всего один VC, логику мы должны писать только в контроллерах. Этот VC должен знать об этом tableView. Потому и делегатные методы tableView должны быть в этом контроллере, те что отвечают за создание ячейки, выбор ячейки и прочее, а значит и создаваться cardView будет в классе VC, но тогда вопросов об обработке тапов не возникает. Так что вы зря логику вынесли во View классы.

    Если хотим разделить логику, то нужен еще один VC2, который будет держать tableView, будет создавать карты, узнавать об их нажатии. При этом создавать его будет основной VC1 и сразу добавлять вью VC2 на свой. Вот тогда VC2 будет делегировать нажатия по картам в VC1.
    Примеров создания кастомных делегатов очень много, конкретный не посоветую, но они легко гуглятся.
    Ответ написан
  • Стоит ли делать приложение для iOS с помощью JSF?

    kaspartus
    @kaspartus
    Лично я себе вижу как плюсы, так и минусы.
    Плюсы:
    1. Кроссплатформа
    2. Быстрое обновление, без необходимости проходить яблочную проверку каждый раз
    3. Экономия на мобильном(ых) разработчиках(для самого простого случая)

    Минусы:
    1. Более медленное переключение между логическими экранами(отправляем запрос на сервер, получаем ответ, рендерим). Пользователи на мобильных привыкли к моментальному отклику приложений. Это очень важный пункт, история с приложением fb, на мой взгляд, показательна.
    2. Потенциальные проблемы в связывании этого приложения с встроенными в iOS функциями, например с пуш-уведомлениями, геолокацией, фото-альбомом и прочим
    3. Страдает взаимодейстиве с UI. Например мобильные браузеры намеренно тормозят реакцию на нажатие по кнопкам и ссылкам(можно решить). Перетаскивание элементов, смахивание ячеек таблицы достаточно сложно реализовать
    4. Проблемы с реализацией оффлайн режима. В нативном приложении можно было бы поменять настройки профиля, посмотреть историю

    И немного лирики: по своему опыту скажу, что веб-разработчики постоянно пытаются перенести максимум логики на бэкенд, просто потому что это приносит интересные задачи. Ну и вообще разработчики думают средствами и инструментами, с которыми они знакомы и которые им доступны.
    Ответ написан
    Комментировать