Миграция базы данных требуется всякий раз, когда нам нужно внести изменения в модель Core Data. Для определённого набора изменений Core Data может выполнить почти автоматическую миграцию, которая называется облегчённой миграцией.
Это позволяет нам развивать нашу схему без потери существующих данных или необходимости вручную определять правила сопоставления.
Примеры поддерживаемых изменений: добавление, переименование или удаление сущностей, атрибутов или связей, а также изменение типов связей.
Когда изменения в нашей модели выходят за рамки того, что может определить Core Data, нам необходимо выполнить сложную (ручную) миграцию.
Давайте рассмотрим, как выполнить упрощённую миграцию в Core Data.
🔹 Как выполнить упрощённую миграцию в Core Data
Чтобы выполнить упрощённую миграцию в Core Data, необходимо выполнить следующие действия:
1. Включение облегченной миграции
2. Создание новой версии модели
3. Изменение новой модели
Давайте рассмотрим эти этапы более подробно.
Когда мы используем класс NSPersistentContainer для создания стека Core Data и управления им, нам не нужно выполнять никаких дополнительных действий по настройке, облегчённая миграция активируется автоматически.
Если мы создадим собственный стек Core Data вручную, то сможем явно включить эти параметры при добавлении хранилища:
let coordinator = NSPersistentStoreCoordinator(managedObjectModel: managedObjectModel)
let options = [
NSMigratePersistentStoresAutomaticallyOption: true,
NSInferMappingModelAutomaticallyOption: true
]
do {
try coordinator.addPersistentStore(
ofType: NSSQLiteStoreType,
configurationName: nil,
at: url,
options: options
)
} catch {
// handle migration failure
}
Эти два параметра позволяют Core Data автоматически определять модель сопоставления и переносить данные при обнаружении совместимого изменения схемы.
Для автоматической миграции Core Data нужны исходная и конечная версии нашей модели данных.
Если мы изменим существующий
.xcdatamodeld сразу после выпуска нашего приложения, Core Data не будет знать, как выполнить миграцию, и выдаст ошибку о несовместимости моделей.Чтобы избежать этого, мы создаем новую версию модели, выбрав
Редактор > Добавить версию модели в меню Xcode. Это добавит новый файл .xcdatamodel в наш проект.После добавления новой версии мы можем установить текущую версию в инспекторе файлов Xcode. Теперь мы можем спокойно вносить изменения, не нарушая работу существующих хранилищ.
Теперь мы можем вносить изменения в нашу модель. Чтобы Core Data могла создать предполагаемую модель сопоставления, изменения должны соответствовать определённому шаблону, например:
let inferred = try? NSMappingModel.inferredMappingModel(
forSourceModel: oldModel,
destinationModel: newModel
)
if inferred != nil {
// Lightweight migration is possible
}
Если этот вызов вернёт nil, Core Data не сможет определить сопоставление, а это значит, что нам потребуется более сложная миграция вручную.
🔸 Курс «Архитектуры и шаблоны проектирования»
🔸 Получить консультацию менеджера
🔸 Сайт Академии 🔸 Сайт Proglib
#АрхитектурныйКод #MiddlePath #Swift
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
xcrun instruments – профилирование и анализ производительности iOS-приложенийПрофессиональный инструмент для измерения производительности, поиска утечек памяти и анализа энергопотребления прямо из командной строки.
Запуск профилирования:
# Запуск Instruments с шаблоном Allocations
xcrun instruments -t "Allocations" -l 30000 MyApp.app
# Профилирование времени запуска
xcrun instruments -t "Time Profiler" MyApp.app -e UIResponder 30
Автоматизация тестов:
# Запуск с записью результатов в .trace файл
xcrun instruments -t "Time Profiler" -D performance.trace MyApp.app
1. Анализ утечек памяти:
# Запуск Leaks теста на 60 секунд
xcrun instruments -t "Leaks" MyApp.app -l 60000
# С сохранением результатов
xcrun instruments -t "Leaks" -D memory_leaks.trace MyApp.app -l 30000
2. Измерение времени запуска:
# Профилирование запуска приложения
xcrun instruments -t "Time Profiler" MyApp.app -e UIResponder 10 -D launch.trace
3. Анализ энергопотребления:
# Мониторинг использования батареи
xcrun instruments -t "Energy Log" MyApp.app -l 120000
Allocations – отслеживание памяти и объектовTime Profiler – анализ производительности кодаLeaks – поиск утечек памятиEnergy Log – мониторинг энергопотребленияNetwork – анализ сетевой активностиCore Data – профилирование операций с базой данныхПрофилирование конкретного процесса:
# Присоединение к запущенному процессу
xcrun instruments -t "Time Profiler" -p 1234
Создание кастомных конфигураций:
# Сохранение конфигурации профилирования
xcrun instruments -t "Time Profiler" -c "My Custom Config" MyApp.app
Пакетное тестирование:
#!/bin/bash
# performance_test.sh
APP="MyApp.app"
TRACE_DIR="./traces"
mkdir -p $TRACE_DIR
echo "Running performance tests..."
xcrun instruments -t "Time Profiler" -D "$TRACE_DIR/time_profiler.trace" $APP -l 30000
xcrun instruments -t "Allocations" -D "$TRACE_DIR/allocations.trace" $APP -l 30000
Какие инструменты профилирования вы используете в своих проектах?
🔸 Курс «Основы IT для непрограммистов»
🔸 Получить консультацию менеджера
🔸 Сайт Академии 🔸 Сайт Proglib
#буст #MiddlePath #Swift
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1🤝1
🎄 Скоро Новый год, а ты всё ещё не в бигтехе?
Если твой путь лежит в ML, DS или AI, то одна вещь решает всё: математика. Без неё — хоть три проекта сделай, хоть сотню туториалов посмотри — на собесе тебя всё равно вернут на «а что такое градиент?»
🔥 Экспресс-курс «Математика для Data Science» — 8 недель, чтобы закрыть базу раз и навсегда.
Что внутри:
🔘 живые вебинары, где можно задавать вопросы экспертам
🔘 записи лекций + доступ к материалам
🔘 практические задания на Python и финальный мини-проект с фидбеком
🔘 программа обновлена в ноябре 2025
🔘 2 месяца только нужного — без воды
🔘 достаточно школьной математики и базового Python
🎁 Бонусы ноября:
→ 40% скидка до 30 ноября
→ при оплате до конца месяца — курс «Базовая математика» в подарок
→ бесплатный тест, чтобы узнать свой уровень математики
👉 Хочу стартовать
Если твой путь лежит в ML, DS или AI, то одна вещь решает всё: математика. Без неё — хоть три проекта сделай, хоть сотню туториалов посмотри — на собесе тебя всё равно вернут на «а что такое градиент?»
🔥 Экспресс-курс «Математика для Data Science» — 8 недель, чтобы закрыть базу раз и навсегда.
Что внутри:
🔘 живые вебинары, где можно задавать вопросы экспертам
🔘 записи лекций + доступ к материалам
🔘 практические задания на Python и финальный мини-проект с фидбеком
🔘 программа обновлена в ноябре 2025
🔘 2 месяца только нужного — без воды
🔘 достаточно школьной математики и базового Python
🎁 Бонусы ноября:
→ 40% скидка до 30 ноября
→ при оплате до конца месяца — курс «Базовая математика» в подарок
→ бесплатный тест, чтобы узнать свой уровень математики
👉 Хочу стартовать
Please open Telegram to view this post
VIEW IN TELEGRAM
Почему приложение крашится при быстром нажатии кнопки?
Anonymous Quiz
10%
Неправильное обновление UI из фонового потока
55%
UI блокируется вызовом Thread.sleep() в основном потоке
11%
Race condition при изменении переменной counter
6%
Утечка памяти в OnClickListener
18%
Посмотреть ответ
Послушать диджей-сет и найти работу
Мобильные разработчики, особенно стеснительные — информация для вас. В Сколково в эту пятницу (28 ноября) пройдет нетворк для геймдев-тусовки, утренний кофе-рейв. Там соберутся эйчары студий, инвесторы, геймдизайнеры, нарративщики, программные инженеры, продюсеры, чтобы найти проект, привлечь инвестиции или собрать команду. Музыка бодрая, атмосфера приятная, так что знакомства завязываются сами собой. Чтобы начинать разговоры было проще, на стаканчики наклеят цветные стикеры: один покажет, кто ты, второй — кого ищешь. Классный лайфхак, который поможет комфортно заводить полезные контакты даже интровертам.
Так что от вас требуется только прийти, взять на входе кофе (бесплатный, причем), потусить и уйти с новым проектом. Вход свободный, нужна только регистрация.
28 ноября, Сколково (Большой бульвар, 40), с 10 до 11 утра
Мобильные разработчики, особенно стеснительные — информация для вас. В Сколково в эту пятницу (28 ноября) пройдет нетворк для геймдев-тусовки, утренний кофе-рейв. Там соберутся эйчары студий, инвесторы, геймдизайнеры, нарративщики, программные инженеры, продюсеры, чтобы найти проект, привлечь инвестиции или собрать команду. Музыка бодрая, атмосфера приятная, так что знакомства завязываются сами собой. Чтобы начинать разговоры было проще, на стаканчики наклеят цветные стикеры: один покажет, кто ты, второй — кого ищешь. Классный лайфхак, который поможет комфортно заводить полезные контакты даже интровертам.
Так что от вас требуется только прийти, взять на входе кофе (бесплатный, причем), потусить и уйти с новым проектом. Вход свободный, нужна только регистрация.
28 ноября, Сколково (Большой бульвар, 40), с 10 до 11 утра
❤1
👾 Библиотека Jetpack Navigation 3 стала стабильной
Jetpack Navigation 3 стал стабильным в версии 1.0. Используйте библиотеку в своих приложениях уже сегодня. Например, JetBrains уже использует её в своём приложении KotlinConf.
Navigation 3 — это новая навигационная библиотека, полностью разработанная для поддержки состояний Jetpack Compose. Она предоставляет полный контроль над стеком переходов, помогает сохранять состояние навигации и позволяет легко создавать адаптивные макеты (например, list-detail). У JetBrains даже есть кроссплатформенная версия.
👉 Читать статью
🔸 Курс «Основы IT для непрограммистов»
🔸 Получить консультацию менеджера
🔸 Сайт Академии 🔸 Сайт Proglib
🐸 Библиотека мобильного разработчика
#свежак
Jetpack Navigation 3 стал стабильным в версии 1.0. Используйте библиотеку в своих приложениях уже сегодня. Например, JetBrains уже использует её в своём приложении KotlinConf.
Navigation 3 — это новая навигационная библиотека, полностью разработанная для поддержки состояний Jetpack Compose. Она предоставляет полный контроль над стеком переходов, помогает сохранять состояние навигации и позволяет легко создавать адаптивные макеты (например, list-detail). У JetBrains даже есть кроссплатформенная версия.
🔸 Курс «Основы IT для непрограммистов»
🔸 Получить консультацию менеджера
🔸 Сайт Академии 🔸 Сайт Proglib
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
XcodeProjectCLI — быстрый и лёгкий CLI инструмент для управления проектами Xcode, полностью написанный на Swift. Легко интегрируйте его в свой рабочий процесс разработки или автоматизируйте сложные задачи рефакторинга всего несколькими командами.
🔹 Курс «Математика для Data Science»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#буст #iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
🔥 На рынке сейчас математика — снова король: AI растёт быстрее, чем вузы успевают обновлять программы. Мы же перестраиваем курс под индустрию мгновенно.
Хочешь наконец разобраться в математике для DS, а не гуглить «что такое градиент» перед собесом?
Новый курс «Математика для разработки AI-моделей» — это 8 недель плотной подготовки, свежая программа и только актуальные темы, которые реально нужны в ML.
Что в курсе:
→ линал, производные, градиенты, вероятности, статистика;
→ практика на Python и 3 большие ДЗ;
→ живые вебинары + разбор ваших вопросов;
→ финальный мини-проект, который можно положить в портфолио;
→ доступ к материалам и чат с экспертами.
Для старта нужны только школьная математика и базовый Python.
🎁 Бонусы ноября:
— скидка 40% до 30 ноября;
— «Базовая математика» в подарок при оплате;
→ бесплатный тест уровня математики.
👉 Записывайся на курс
Хочешь наконец разобраться в математике для DS, а не гуглить «что такое градиент» перед собесом?
Новый курс «Математика для разработки AI-моделей» — это 8 недель плотной подготовки, свежая программа и только актуальные темы, которые реально нужны в ML.
Что в курсе:
→ линал, производные, градиенты, вероятности, статистика;
→ практика на Python и 3 большие ДЗ;
→ живые вебинары + разбор ваших вопросов;
→ финальный мини-проект, который можно положить в портфолио;
→ доступ к материалам и чат с экспертами.
Для старта нужны только школьная математика и базовый Python.
🎁 Бонусы ноября:
— скидка 40% до 30 ноября;
— «Базовая математика» в подарок при оплате;
→ бесплатный тест уровня математики.
👉 Записывайся на курс
Рассказываем о способах, которые помогут подстраховать себя на работе в период кризиса в IT-индустрии. Объясняем, как заключить трудовой договор (и что точно должно быть в нем прописано) и соглашения о расторжении.
👉 Читать статью
🔸 Курс «Основы IT для непрограммистов»
🔸 Получить консультацию менеджера
🔸 Сайт Академии 🔸 Сайт Proglib
#MadeInProglib
Please open Telegram to view this post
VIEW IN TELEGRAM
Хотите выйти на международный рынок? Этот промпт поможет правильно реализовать локализацию и поддержку нескольких языков.
Implement comprehensive localization system for a mobile app that includes:
— Set up string resource files for different languages
— Implement RTL (Right-to-Left) layout support
— Handle dynamic language switching without app restart
— Format dates, numbers, and currencies according to locale
— Manage pluralization and gender-specific translations
— Support regional variants (en-US vs en-UK)
— Add accessibility for translated content
— Добавьте
Implement in-context translation preview для удобства тестирования— Добавьте
Add fallback strategies for missing translations чтобы избежать пустых экранов— Добавьте
Support dynamic content from CMS для переводимого контента с бэкенда🤌 Бонусы для подписчиков:
— Скидка 40% на все курсы Академии
— Розыгрыш Apple MacBook
— Бесплатный тест на знание математики
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
Мобильные разработчики, готовим планы на следующий год и хотим понять, в какой информационной среде вы обитаете. Помогите составлению общей картины.
Напишите в комментариях:
#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
😁3👏1
This media is not supported in your browser
VIEW IN TELEGRAM
🔥 Хочешь строить свои AI-модели, а не просто запускать чужие?
Proglib.academy открывает курс «Математика для разработки AI-моделей» — программу, которая превращает понимание ML из «черного ящика» в осознанную инженерную работу.
📌 Почему без математики в AI никуда:
→ Чтобы пройти собеседование. Это первый фильтр: линал, матстат, оптимизация — спрашивают везде.
→ Чтобы понимать процесс изнутри. Инженер AI должен понимать, почему и как работает модель, а не просто жать fit().
🎓 Что будет на курсе:
→ 3 практических задания на Python + финальный проект с разбором от специалистов;
→ программа обновлена в ноябре 2025;
→ за 2 месяца пройдёшь весь фундамент, нужный для работы с моделями;
→ преподаватели — гуру математики, методисты и исследователи из ВШЭ и индустрии.
🎁 Бонусы ноября:
— 40% скидка;
— получаешь курс «Школьная математика» в подарок;
— короткий тест и узнать свой уровень.
🔗 Подробнее о курсе
Proglib.academy открывает курс «Математика для разработки AI-моделей» — программу, которая превращает понимание ML из «черного ящика» в осознанную инженерную работу.
📌 Почему без математики в AI никуда:
→ Чтобы пройти собеседование. Это первый фильтр: линал, матстат, оптимизация — спрашивают везде.
→ Чтобы понимать процесс изнутри. Инженер AI должен понимать, почему и как работает модель, а не просто жать fit().
🎓 Что будет на курсе:
→ 3 практических задания на Python + финальный проект с разбором от специалистов;
→ программа обновлена в ноябре 2025;
→ за 2 месяца пройдёшь весь фундамент, нужный для работы с моделями;
→ преподаватели — гуру математики, методисты и исследователи из ВШЭ и индустрии.
🎁 Бонусы ноября:
— 40% скидка;
— получаешь курс «Школьная математика» в подарок;
— короткий тест и узнать свой уровень.
🔗 Подробнее о курсе
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет код?
Anonymous Quiz
45%
Result: 30, Multiplier: 3
12%
Result: 30, Multiplier: 2
21%
Result: 15, Multiplier: 3
21%
Ошибка компиляции
Please open Telegram to view this post
VIEW IN TELEGRAM
😢5
В карточках рассказали, как находить технических лидеров стартапов и продуктовых компаний и писать так, чтобы точно получить ответ.
👉 Читать статью
— Скидка 40% на все курсы Академии
— Розыгрыш Apple MacBook
— Бесплатный тест на знание математики
#MadeInProglib
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1