FMPWrapper - фреймворк, написанный на Swift на основе HHFW. В этом блоке уже более объектно-ориентированный подход. Тем не менее при работе с ним необходимо иметь ввиду, что в основе лежит синглтон из HHFW. FMPWrapper не обязателен к использованию, так как является оберткой для HHFW, однако он упрощает работу с кодом за счет своей архитектуры.
FMPWrapper содержит:
Основным рабочим элементом является объект класса FMPFactory, который является фабрикой для инициализации строителей для всех используемых классов.
// Инициализация фабрики
let fmp = FMPFactory()
// Инициализация строителя для объекта, описывающего локальную БД
let databaseBuilder: FMPDatabase.Builder = fmp.database
// Построение и инициализация объекта, описывающего локальную БД
let database: FMPDatabase = databaseBuilder
.path(databasePath)
.key(key)
.build()
// Вызов метода объекта
database.open()
Методы FMPWrapper возвращают данные в обработанном виде (объекты).
В случае запросов на сервер, по окончанию так же вызывается замыкание, но уже типа FMPRequestResponseHandler (или иной в зависимости от метода). В этом замыкании аргументом является кортеж, в котором первыми двумя параметрами являются статус запроса Bool и опциональная ошибка FMPError?. Они представлены в более удобном виде, поэтому могут быть обработаны в коде без дополнительных усилий со стороны разработчика. Третьим параметром замыкания является результат запроса. Он может быть как словарем с данными NSDictionary, так и объектом или массивом объектов (это зависит от метода).
let file: FMPFile = FMPFactory().file.build()
// typealias FMPRequestResponse = (success: Bool, error: FMPError?, result: NSDictionary?)
// typealias FMPRequestResponseHandler = (_ response: FMPRequestResponse) -> Void
file.download { (response) in
if response.success {
// Hurray!
} else {
print(response.error?.description)
}
}
// typealias FMPFileMetaHandler = (_ success: Bool, _ error: FMPError?, _ meta: FMPFile.Meta?) -> Void
file.loadMeta { (success, error, result) in
if success {
print(meta?.size)
}
}
См. также: