cocoapods swift что это такое
Переход c Cocoapods на Swift Package Manager
Cocoapods считается наиболее популярным менеджером зависимостей для iOS. Последние годы Apple работает над развитием своего нативного менеджера зависимостей Swift Package Manager (SPM).
Изначально его использование было возможно только для server-side Swift или приложений для терминала. На таких приложениях обкатывали и дорабатывали SPM, комьюнити знакомилось с его работой, а команда Apple получила бета тестеров.
С релизом Xcode 11 SPM начал приходить и в мир разработки под iOS. Сейчас это уже полноценный инструмент, который можно использовать, но пока с ограничениями.
В актуальной версии SPM не поддерживает ресурсы (ждем SE-0271). У нас каждый модуль является атомарной самодостаточной зависимостью, которую можно подключить к проекту, так что ресурсы необходимы (локализации, ассеты).
А пока мы ждем, можно подготовиться к миграции: понять, насколько это сложно, можно ли это автоматизировать и с какими проблемами можно столкнуться.
Зачем мигрировать с Cocoapods на SPM?
Как выглядит миграция?
Если ваш проект имеет достаточно много зависимостей, то процесс миграции не сделать за один день. Количество зависимостей в Podfile не равно общему количеству зависимостей, так как одна зависимость может идти в комплекте с еще десятью. Даже если у вас не много зависимостей, но вы разрабатываете свои зависимости, возможно, даже в приватных репозиториях, быстро не мигрировать. К счастью, SPM отлично уживается с Cocoapods, и процесс миграции можно вести итерационно. Главное — учесть нюансы:
С чего начать?
Прежде всего собираем полный список ваших зависимостей — он представлен в Podfile.lock. Для этого можно использовать утилиты, например SPMReady.
Далее группируем их по связям. Например, от SMENetwork у нас зависят почти все компоненты, а значит, мы не сможем мигрировать их на SPM, пока не мигрирует сам SMENetwork.
Затем выделяем один модуль, от которого зависит больше всего модулей, — SMENetwork.
И наконец переходим в репозиторий этого модуля, чекаутим его в папку и создаем в руте этой папки модуль.
В результате мы получаем основной файл Package.swift и папки Sources и Tests. Если они у вас уже были, их не перетрет. Файлы SMENetwork.swift, SMENetworkTests.swift, XCTestManifests.swift, LinuxMain.swift созданы для примера работы Package, их можно удалить.
Файл Package.swift выглядит следующим образом:
Теперь посмотрим на файл SMENetwork.podspec:
Как видно, Sources и Tests лежат в других папках. Перенесем файлы и проверим работоспособность Cocoapods Example проекта.
Добавляем в Package.swift платформу разработки и переносим зависимости из podspec файла сюда. Убеждаемся, что они поддерживают SPM: для этого достаточно проверить, что в Гитхабе есть файл Package.swift. Если его нет и даже нет PR с ним, сделаем PR и поможем Open-Source community.
Для SPM не нужно создавать Example проект: достаточно открыть Package.swift в Xcode и он сам скачает и подключит зависимости, создаст таргеты согласно нашей спецификации. Нам остается только запустить.
В нашем случае почти все заработало из коробки, за исключением одного места, где забыли import Foundation: iOS-разработчики привыкли, что UIKit и Foundation необязательны, ведь работает и без них. Пора отучаться от этой привычки.
Package компилируется, тесты компилируются, но не проходят.
И тут мы упираемся в ограничение отсутствия ресурсов в Package, тесты основаны на моках, которые лежат в json ждем SE-0271…
Переехать с Cocoapods на SPM несложно. Шаги понятны, но flow монотонен и требует автоматизации.
CocoaPods: быстрый старт
CocoaPods — это менеджер зависимостей для cocoa-проектов Swift и Objective-C. Насчитывается более десяти тысяч библиотек, которые помогут вам в создании быстрых и элегантных приложений. Давайте начнем.
CocoaPods: Установка
CocoaPods построен на Ruby и доступен по умолчанию в OS X. Советую не отклонятся от констант и использовать стандартный Terminal. Первая команда, которую нужно ввести в терминал:
Могу вас поздравить — вы только что установили CocoaPods на ваш Mac.
У CocoaPods есть приложение для OS X, скачать актуальную версию которого вы можете здесь. Это приложение — действительно классный инструмент, сильно упрощающий жизнь. Хотя делать все в терминале как то привычнее =)
CocoaPods: Первые шаги
Первым делом на Githubhttp://www.github.com (основываться мы будем только на нем) найдите интересующие вас библиотеки. Для демонстрации я выбрал две библиотеки — Easypeasy для быстрого и удобного создания лайаутов и Realm для удобного создания и управления базой данных. Помните, во всех адекватных библиотеках обязательно должно быть указано имя pod. Оно то нам и нужно для установки библиотеки в наш проект.
Теперь в папке вашего проекта вам необходимо создать Pod-файл. В этом файле будет хранится вся необходимая информация для дальнейшей работы с CocoaPods в проекте. Для того что бы создать Pod-файл внутри папки вашего проекта, вам понадобится ввести 2 команды в Terminal:
Установка SQLite.Swift (CocoaPods)
Введение
В данной статье мне бы хотелось рассказать об одном способе связывания Swift с базой данных. Хочу отметить, что в целом материал не новый, но основное в нем — это пошаговая инструкция как установить SQLite.Swift и как добавить базу данных в свой проект, что может пригодиться начинающим.
На просторах интернета очень много различных роликов и статей о том, каким образом можно связать базу данных SQLite и Swift. В основном попадались такие варианты, как использование FMDB, или SQLite.Swift, или Core Data, но, к сожалению, не удалось найти полностью пошаговой инструкции (если так моно выразиться). Для решения своей задачи был выбран SQLite.Swiftt. О нем и пойдет речь далее.
Как указано на GitHub, существует три способа установки SQLite.Swift: Carthage, CocoaPods и Swift Package Manager. При написании приложения был выбран второй способ: CocoaPods.
Для начала можно создать новый проект в Xcode (я назову его «myProject») используя шаблон «Single View App». Вы так же можете использовать уже Ваш существующий проект.
Установка SQLite.swift
Установка SQLite.Swift в наш проект завершена и мы можем закрыть наш Терминал.
Напоследок, расскажу о том, как добавить базу данных в проект.
Добавление базы данных в проект
На самом деле существуют различные способы добавления или создания базы данных. О них описано в документации. Я же покажу это на примере «Read-Only Database».
1. Для начала в нашем проекте в Xcode можно создать новую папку, например: Database. Это необязательно, но в дальнейшем поможет Вам легче ориентироваться в проекте.
2. Теперь перетаскиваем нашу базу данных (я назвал её TableDB, в формате .db) в эту папку. Стоит отметить, что файл должен быть формата .db, .sqlite, .sqlite3, .db3.
3. Создаем новый Swift-файл и добавляем в него следующий код:
import SQLite
class Database <
static let shared = Database()
public let connection: Connection?
private init() <
do <
let dbPath = Bundle.main.path(forResource: «tableVukalovich», ofType: «db»)!
connection = try Connection(dbPath)
> catch <
connection = nil
let nserror = error as NSError
print («Cannot connect to Database. Error is: \(nserror), \(nserror.userInfo)»)
>
>
>
Данный код сначала импортирует модуль SQLite. Затем создается новый класс со статической и публичной переменными. После чего происходит инициализация следующим образом:
3.1 Пытаемся установить соединение с базой данных;
3.2 В случае «успеха» соединение установиться;
3.3 Если же не удалось установить соединение, то выдай ошибку.
4. И завершающим шагом является добавление нашей базы данных в TARGETS, а именно в Build Phases в строке Copy Bundle Resources.
Нажимаем cmd+B и видим, что ошибок в нашем проекте нет.
Использование Cocoapods при создании собственных библиотек
Cocoapods — отличный инструмент для подключения сторонних разработок в свой проект. На самом деле его не менее удобно использовать и при создании собственных компонентов, в этой статье я расскажу, как это делать.
Создание проекта библиотеки
Предположим, существует проект с названием «MyOwnApplication». Возникла необходимость разработать библиотеку «MyOwnLib» и задействовать ее в данном проекте.
Итак, создаем проект библиотеки. Можно сделать это обычным способом через Xcode, но мне удобнее сгенерить его c помощью Cocoapods:
Проходим короткий квиз и в течение нескольких секунд будет сгенерирован проект. Я выбрал платформу iOS, отказался от тестов и согласится включить в проект демо-приложение. В результате получил следующую структуру:
Подключение библиотеки к проекту
Вернемся к «MyOwnApplication». Если до этого момента в проекте не использовался cocoapods, открываем консоль и выполняем:
Пока библиотека не опубликована, я прописал путь к локальному каталогу. Можно указать путь к Git.
Выполняем в консоли:
Процесс разработки
Публикация библиотеки
В дальнейшем для более удобного использования «MyOwnLib» ее можно опубликовать на cocoapods. Для этого предварительно необходимо разместить код библиотеки на удаленном сервере, например, GitHub, и настроить podspec. Перейдем сразу ко второму пункту.
После того, как мы все настроили, для проверки файла необходимо выполнить команду:
или, для вывода в консоль более подробной информации о процессе:
После того, как устраним все замечания, можно перейти к публикации.
Предварительно необходимо зарегистрировать сессию:
Дожидаемся письма на указаный email, подтверждаем его и пушим под в cocoapods:
Готово! Теперь можем подключать нашу библиотеку в любом проекте так:
Для удаления pod используйте:
На этом все
Буду рад, если информация, изложенная в этой статье будет кому-то полезной. Спасибо за внимание.
Устанавливаем CocoaPods и Realm
Jan 19, 2017 · 5 min read
Это руководство по установке CocoaPods и Realm я написал в большей степени для себя, как заметку! Но, если эта статья кому-то пригодится, то я буду только рад. (-:
Итак, начнем!
Сначала краткое пояснение о том …
… что такое CocoaPods?
CocoaPods — это мощное и одновременно изящное средство управления зависимостями Cocoa-библиотек, которые разработчики используют в своих iOS и macOS проектах.
… что такое Realm?
Realm — это кроссплатформенная мобильная баз а данных для iOS (Swift, Objective-C) и Android. Realm построен чтобы быть лучше и быстрее, чем SQLite и Core Data. Она не просто лучше и быстрее, она легка в использовании, и Вы сможете делать много вещей используя всего несколько строк кода.
Установка CocoaPods
Для установки CocoaPods откройте Терминал и введите следующую строку:
Вот и всё! CocoaPods установлен. CocoaPods Guides.
— прямой переход в основную папку пользователя /users/имя_пользователя
cd
/Documents — перейти в папку документы принадлежащую тукещему пользователю. Таким образом, можно переходить и в другие папки пользователя
cd Documents/RealmTasks/ — переход в папкуDocuments/RealmTasks/
cd /pictures — попытка перехода в директорию pictures расположенную в КОРНЕВОЙ папке диска
cd pictures — попытка перехода в папку pictures в текущей папке
cd ‘Имя папки’ и cd Имя\ папки — имя папки с “пробелом” должно быть заключено в одинарные кавычки или должен быть обратный слэш перед пробелом
pwd — она показывает, где вы сейчас находитесь (print working directory)
Установка Realm
Для начала, нам необходимо создать в Xcode новый проект “Single View Application” и назовем его “RealmTasks” или как Вам нравиться.