iOS разработчик, который делится фишками, своим опытом и опытом других. В этом канале вы сможете найти истории из жизни, подходы к реализации а также новости и тренды из мира iOS-разработки Авторский канал, iOS разработка
Range, все они могут иметь существенные различия.
🕵️♂️ На первый взгляд может показаться, что единственное из них заключается в том, как задаются границы диапазона.
📖 В статье рассказывается, так ли это на самом деле.
👏 529 на Medium#file, #line и #function, которые соответственно устанавливаются в имя текущего файла, строки и функции.
Эти переменные становятся очень полезными при написании функций логирования или, например, тестовых предикатов.iosdev2022JRGpcXcode Source Editor Extension, которое добавляет некоторые дополнительные функции в нашу среду разработки.
ℹ️ И хотя процесс создания расширения на первый взгляд может показаться сложной задачей, после изучения XcodeKit, возможно, вы посмотрите на это под другим углом.forEach(_:) является отличной альтернативой классическому циклу for.
Однако есть одно ограничение: forEach(_:) не позволяет остановить перебор элементов на полпути.
Вдохновившись реализацией Objective-C, мы можем написать расширение, которая позволит остановить этот процесс, если необходимо.Sequence с целью удаления всех содержащихся в ней дубликатов — это классический случай использования.
🤔 Для его реализации может возникнуть соблазн преобразовать Sequence в Set, а затем обратно в Array.
🙅♂️ Недостатком такого подхода является то, что при этом не сохранится порядок, что явно нежелательно.
🆗 Используя reduce(), можно обеспечить краткую реализацию, сохраняющую порядок, как на скриншоте.kSecKeyAlgorithmECIESEncryptionCofactorVariableIVX963SHA256AESGCM
📖 Рекомендую материал для расширения вашей базы знаний о безопасности.let activity = NSUserActivity(activityType: typeID)
activity.keywords = ["слово", "или даже ключевая фраза"]
На более серьёзном уровне это можно реализовать, используя CoreSpotlight.
ℹ️ Важный момент.
Стоит учитывать количество ключевых слов. Чем их больше — тем приложение будет ниже в выдаче.
Авито, сделайте, пожалуйста, чтобы я мог вас найти, вбив Avito.threadIdentifier и summaryArgument в UNMutableNotificationContent.
ℹ️ Тогда iOS будет показывать эти сообщения вместе, а не в длинной цепочке вперемешку с другими сообщениями.
threadIdentifier — не будет показан пользователям, но это позволит iOS знать, что уведомления должны быть сгруппированы вместе. Если вы, например, делаете аналог Telegram или WhatsApp, то можно использовать ID пользователя (но не имя, которое может быть неуникальным).
Если вам нужна дополнительная кастомизация, то можно использовать summaryArgument — эта строка будет показана пользователям.
🔔 И тогда iOS покажет что-то вроде «ещё 5 оповещений от канала iOS Dev».