Swift
Извлечение замыканий
Вслед за извлечением методов мы научились извлекать замыкания. Отдельного сочетания клавиш не нашлось, но рефакторинг можно легко вызвать через
?T
+ 5
:Сигнатуру замыкания, как и всегда, легко менять:
Переименование
Убрали диалоги для локального переименования:
Многое доработали в кросс-языковой части. Теперь можно нормально переименовывать аргументы блоков в Objective-C, имена классов, экспортированных из Objective-C в Swift с помощью атрибута
@objc
, и элементы перечислений в Swift.Автодополнение
Продолжаем закрывать “элементарные” случаи типов автодополнения. В этот раз добавили автоматическую вставку ‘?’ для опциональных типов:
И параллельно добавляем чуть менее элементарные, вроде автодополнения для атрибутов в Swift:
Гензель и Гретель спасены
Плюс наших хлебных крошек — в том, что птицы их не съедят. Поэтому и Гензель, и Гретель без проблем найдут путь домой:
Комментарии для расширений
В Objective-C категории легко отличить по имени. А вот в Swift имен у расширений (extensions) нет. Поэтому мы добавили в Structure View отображение комментариев из кода расширений в Swift:
Override/Implement
Исправили генерацию перегрузок / реализаций для полей с одинаковым именем из базовых классов и протоколов, изменяемых свойств (mutable) и опциональных частей протоколов, еще не реализованных в базовом классе:
Intentions
В AppCode 2017.3 появились действия для добавления / удаления явно указанных типов у переменных, а в AppCode 2018.2 мы реализовали то же самое для циклов:
Отладка
Решили проблему с выводом для скриптов на Python (таких как Chisel):
Платформа выкатила небольшую, но очень удобную фичу — пачку действий для манипуляции с точками останова через
??
:Сообщения сборки
В этом релизе мы решили, кажется, последнюю действительно крупную проблему с отображением сообщений сборки — стали нормально обрабатывать вывод фазы Run Script:
Поддержка баз данных
В AppCode 2018.2 мы включили полную функциональность DataGrip для работы с БД. Вот, кстати, пример для SQLite:
Со всеми возможностями можно ознакомиться у нас на сайте.
Touch Bar
Теперь работает и в AppCode:
Контроль версий
Как и всегда, множество улучшений добавлено в платформу IntelliJ, и все они теперь доступны в AppCode.
Интерфейс пользователя
Самое видимое из изменений — это полностью переработанные в едином стиле иконки:
Про процесс изменения иконок можно прочитать вот тут.
На этом все. Как и всегда, скачивать — тут, баги — в трекер, вопросы общего характера задаем прямо здесь.
Комментарии (21)
iFamily
28.08.2018 19:16Был бы очень рад туториалу как использовать AppCode при разработки бэкенда на Swift + Vapor3, потому что самому завести не удалось.
yeswolf Автор
28.08.2018 19:30Это есть в планах. Но так как за время с написания черновика произошли секретные улучшения, о которых говорить нельзя, требуется переработка :).
А что не получилось завести конкретно? По идее, Xcode-проект для Vapor мы нормально обрабатываем.iFamily
28.08.2018 20:55Цель была получить хороший быстрый автокомплит, который недоступен в Xcode когда проект большой.
В AppCode очень долго минут 20 шла индексация, и в итоге совсем не работал автокомплит:( (MBP2017 15")yeswolf Автор
29.08.2018 15:03Поподробнее бы понять, с проектом, где и что отвалилось. У меня на тестовых проектах комплит работал нормально. Опять же, встает вопрос — какая версия Xcode / AppCode.
SergeyMild
29.08.2018 15:02+1Поправьте переходы, когда кликаешь по классу, чтобы перебрасывало в класс, а не в NSObject к методу init()
sacred
29.08.2018 16:21Автокомплит для Apollo GraphQL бы завести. А то не показывает все доступные варианты
SerafimArts
29.08.2018 20:08Ну так обратитесь к разработчику плагина: github.com/jimkyndemeyer/js-graphql-intellij-plugin/issues
Это же не проблема AppCode и/или IDEAsacred
29.08.2018 20:11при чем тут разработчик плагина? никаких плагинов я не использую. автокомплит не видит часть полей из обычного swift файла который генерится при билде. очевидно, что это проблема среды разработки, а не отсутствующего плагина
SerafimArts
29.08.2018 20:15А, ну я не так понял проблему.
Некоторые проблемы, особенно автогенерации и вообще новых файлов (бывает и после пулла новых файлов из репы) можно решить обычным рефрешем (Ctrl+Alt+Y), кнопочкой слева-сверху. Мне помогало.
yeswolf Автор
30.08.2018 12:47И все-таки нужно чуть побольше информации. Вот мы отсмотрели их тестовый проект, на первый взгляд криминала нет (AppCode 2018.2). Можете форкнуть проект и просто там, где есть проблемы, поставить короткий комментарий? Или хотя бы участок кода нужен, пока непонятно, куда копать.
spiceginger
29.08.2018 17:36Хочу сказать спасибо за AppCode, это самые продуктивные 6 евро которые я трачу в месяц. Если бы вы еще добавили возможность принудительной переиндексации проекта — было бы здорово. У нас большой проект состоящий из нескольких фреймворков и очень часто возникает ситуация, что, после нескольких переключений бранчей в гит, индексация проекта слетает и приходится закрывать и открывать AppCode снова.
yeswolf Автор
29.08.2018 17:48Спасибо! Про ваш комментарий — есть вот такая проблема, мы ее очень долго нормально не можем воспроизвести. Переиндексация должна происходить, но не происходит. Что бы помогло нам:
Help > Show Log in Finder > отправить всю папку на stanislav.dombrovsky@jetbrains.com (мне). Либо приттачить в тикет выше с видимостью на
appcode-developers
Описать (либо по email, либо в тикете), как в точности действия происходят до возникновения красного кода (только ли это переключений бранчей или, допустим, установка pods, удаление pods, что-либо еще). Кажется, мы не реагируем на какое-то действие, на которое должны.
Если сможем воспроизвести — это очень сильно поможет, давно хотим решить.
spiceginger
29.08.2018 17:54Как возникнет в следующий раз — сделаю. Это точно стало происходить реже в последние месяцы.
yeswolf Автор
29.08.2018 18:46Логи лучше выслать сейчас — там с большой вероятностью осталось что-то полезное.
SerafimArts
Предлагаю добавить киллерфичу с голосовым вводом. Хотя бы по ключевым словам: «дополни», «переименуй», «найди», «раздели» и проч, а то я от силы 1/100 хоткеев помню. Вам бы с Яндексом и их Алисой скооперироваться и будет вообще бомба).
Ну или можно поступить более тривиально и неинтересно и заменить даблшифт на команду поиска команд, а не обычного поиска (который полностью идентичен набору Ctrl+Shift+A, Ctrl+Shift+N, Ctrl+N, etc).
staticlab
Эмм, так Ctrl+Shift+A — это как раз и есть поиск команд, разве нет? Притом контекстнозависимый.
SerafimArts
Я об этом сочетании узнал только что, когда начал смотреть какие вообще есть сочетания и что-то не подумал об этой логической несостыковочке. Бывает. Последний абзац действительно глупо звучит.
Основной посыл был в том, что сочетаний клавиш овердохрена.
yeswolf Автор
Тут как:
1. Скоро Go to Class/Symbol/File/Search Everywhere/Find action будут объединены в одно окно.
2. Шорткаты надо учить, как правило они довольно логично выстроены группами. В этом смысле для начала стоит освоить основные группы по генерации / рефакторингам / возможностями редактора. Да, придется потратить время. Но грубо говоря, это X, который потом сэкономит 10X. Допустим, даже элементарное выделение через Expand/Shrink Selection существенно упрощает жизнь. В целом, это верно для любого инструмента разработки.
3. Активное использование Find Action сильно упрощает их изучение. Можно еще поставить что-нибудь вроде Key Promoter X.