Фото Joshua Olsen on Unsplash
На прошлой неделе я перечислил в своем блоге изменения, которые я надеялся увидеть в SwiftUI на WWDC в этом году. На этой неделе я хочу продолжить делиться своими ожиданиями относительно Core Data.
Переосмысление Swift
Срочность: 3 Целесообразность: 0,5 (Общая оценка: 5)
В течении последних двух-трех лет, при приближении WWDC, всегда находились разработчики, которые предсказывали (или, скорее, ожидали), что Apple выпустит релиз Core Data полностью основанный на Swift. Однако, с рациональной точки зрения, условия для этого во всех аспектах еще не созрели. С одной стороны, в качестве широко используемого фреймворка для управления объектным графом с возможностью сохранения, Apple должна быть очень осторожна внося изменения. С другой стороны, несмотря на то, что реализация Core Data устарела, она все еще может стабильно использоваться с множеством новых фреймворков и сервисов, и у Apple нет необходимости для революционных изменений. Наконец, текущий язык Swift и другие фреймворки, используемые вместе с Core Data, все еще не обладают способностью поддерживать создание чистых реализаций на Swift.
Исходя из опыта со SwiftUI, когда Apple запланирует выпустить Swift-версию Core Data, мы неизбежно увидим намеки на это в предложениях сообществу Swift.
Тем не менее, я все еще очень хочу, чтобы Core Data был реализован на основе Swift, и с нетерпением жду того дня, когда это случится. Возможно, переработка на Swift позволит получить кросс-платформенные возможности.
Рефакторинг некоторых API с помощью Swift
Срочность: 5 Целесообразность: 4,5 (общая оценка 5)
Хотя я не думаю, что Apple переработает Core Data на Swift в ближайшей перспективе, работа над этим переходом фреймворков и API ведется уже несколько лет.
В настоящее время реализованные API на основе Swift включают FetchRequest (один из фреймворков SwiftUI) и SortDescriptor.
В недавнем релизе swift-foundation уже упоминается Predicate, и ожидается, что он будет реализован во второй половине года. Если Apple сможет реализовать и другие API (например, NSExpression) на Swift, а затем внести целевые улучшения в язык Swift, то реализация Core Data на базе Swift вероятно появится.
Поддержка большего количества новых функций SQLite
Срочность: 4 Целесообразность: 3,5 (общая оценка: 5)
Хотя Core Data в настоящее время поддерживает четыре модели хранения данных, большинство разработчиков по-прежнему предпочитают SQLite в качестве предпочтительного типа хранения. Apple также знает об этой ситуации, поэтому некоторые новые функции, разработанные для Core Data в последние годы, поддерживают только SQLite.
Однако Apple долгое время не улучшала поддержку SQLite в Core Data. Лично для меня очень важны возможности полнотекстового поиска и нативного запроса JSON, которые может предоставить SQLite.
Я надеюсь, что указанные функции будут внедрены в Core Data в ближайшие один или два года.
Улучшенный редактор моделей
Срочность: 4 Целесообразность: 4 (общая оценка: 5)
В последние годы Apple практически отказалась от улучшения редактора моделей в Xcode, за исключением добавления необходимой поддержки для некоторых новых функций. Особенно в Xcode 14, Apple удалила редактор графа связей для моделей данных, что вызвало у меня замешательство.
Хотя я не часто использую эту функцию, главным преимуществом или особенностью Core Data по сравнению с другими фреймворками хранения данных, является его способность управлять связями. Это также одна из основных причин, почему Core Data рассматривается как фреймворк управления объектным графом, а не просто как фреймворк хранения данных.
Даже если редактор моделей нельзя улучшить, его первоначальные преимущества не должны удаляться.
Я все еще искренне надеюсь, что команда Xcode не откажется от редактора моделей и будет улучшать его функциональность и пользовательский опыт.
Улучшение некоторых API в Core Data с помощью CloudKit
Срочность: 5 Целесообразность: 4 (общая оценка: 5)
В течение первых трех лет после выпуска Core Data с использованием CloudKit, Apple продолжала активно развивать этот фреймворк, внедряя множество функций, таких как синхронизация между частными и публичными базами данных, а также возможность обмена данными. По сравнению с самим фреймворком Core Data, достижения Apple в продвижении облачной синхронизации Core Data впечатляют.
Однако, к сожалению, в прошлом году не было продолжения этой тенденции развития. Новых функций не было введено, и некоторые проблемы, возникшие ранее, не были решены.
В частности, функция обмена данными не получила широкого распространения среди разработчиков из-за некоторых несовершенств API.
Core Data с CloudKit сегодня является мощным инструментом в экосистеме Apple, а приложения, разработанные на его основе, обладают значительной платформенной эксклюзивностью. Apple следует эффективно использовать созданные преимущества для дальнейшего развития этой функционала, по крайней мере, для обеспечения нормального использования всех текущих функций.
Повышение производительности синхронизации Core Data с помощью CloudKit
Срочность: 5 Целесообразность: 3.5 (общая оценка: 5)
Поскольку все больше приложений используют Core Data с CloudKit, количество данных, создаваемых пользователями, также быстро увеличивается. Поэтому проблема низкой эффективности синхронизации через сеть становится все более очевидной.
Как разработчик, я понимаю, что вопросы стоимости заставляют Apple контролировать частоту и объем синхронизации данных. Однако, учитывая то, множество приложений построены на Core Data с CloudKit в качестве своей синхронизационной платформы, может ли Apple рассмотреть возможность предоставления большего выбора инструментов для разработчиков или пользователей?
Например, позволяя разработчикам или пользователям получать более качественные и быстрые услуги синхронизации за дополнительную плату.
Конечно, если бы Apple могла повысить общую производительность сервисов iCloud, чтобы все разработчики и пользователи могли пользоваться ими бесплатно, это было бы лучше.
Заключение
Как говорится, "чем глубже любовь, тем сильнее ответственность". Как активный пользователь Core Data, я искренне надеюсь, что Apple продолжит развивать этот многолетний фреймворк и привнесет в него второе дыхание.
Я надеюсь, что эта статья была полезна для вас. Вы также можете связаться со мной через Twitter, канал Discord или доску объявлений моего блога.