#ios #swift #frameworks
#iOS #swift #фреймворки
Вопрос:
У меня есть свой собственный фреймворк, который использует некоторые фреймворки Firebase. Я не хочу включать эти фреймворки в свои собственные, вместо этого конечное приложение должно выполнять эту работу так, как это должно быть. Но мой вопрос:
Как я могу использовать функциональные возможности базы данных Firebase (например) в моем фреймворке?
Если я не импортирую фреймворки Firebase в свой собственный фреймворк, у меня нет ссылок на них, и я не знаю, как связать их с моим, чтобы использовать API, предоставляемый Firebase database.
Итак, что я должен сделать, чтобы взаимодействовать с другими фреймворками? Я хотел бы иметь что-то вроде:
import Firestore // ERROR: No such module 'Firestore'
internal class MyClassInsideMyFramework {
let db = Firestore.firestore()
var ref: DocumentReference?
func addUser(name: String, age: Int) {
ref = db.collection("users").addDocument(data: ["name": name, "age": age])
// Do more stuff...
}
}
Комментарии:
1. Вы пробовали использовать Swift Package manager?
2. Если вам не нужна большая часть функциональности, напишите протокол и попросите приложение предоставить делегат, который реализует этот протокол. Протокол будет соответствовать необходимой вам функциональности. Затем вам нужно, чтобы какой-либо объект в приложении реализовал этот протокол и выполнил взаимодействие с Firebase.
3. SPM управляет только зависимостями и встраивает их в проект, поправьте меня, если я ошибаюсь, и это не решает мою проблему подключения к другим фреймворкам. И мне нужны функциональные возможности, реализованные самостоятельно, потому что я не хочу, чтобы конечное приложение писало дополнительный код. Это мог бы быть хороший подход, но я предпочитаю сохранять все автоматически для конечного приложения.
4. SPM также позволяет фреймворкам определять свои собственные зависимости. CocoaPods предоставляет такую же функциональность. В любом случае вам нужно разрешить пакету управлять обработкой, потому что приложение может импортировать тот же фреймворк по другим причинам (именно поэтому вам разумно задавать вопрос так, как вы есть).
5. Я попробовал SPM и, похоже, он пока официально не поддерживает iOS. И я не знаю, делаю ли я это неправильно, но я все еще не могу импортировать библиотеки в коде. У кого-нибудь есть другая альтернатива? PS: Я против Cocoapods, потому что я чувствую, что это делает мой проект грязным.