Получение табличных данных без загрузки в базу данных

Для получения табличных данных без загрузки в базу данных создайте приложение «HHFWTable», в котором используются методы фреймворка:

Имя метода Краткое описание
initWithCredentials (_: host: environment: project: application: device:) Метод выполняет инициализацию фреймворка.
auth (_: password:) Метод выполняет аутентификацию пользователя по логину и паролю.
table (_: transactionID: tableCallParams: handler:) Метод возвращает табличные данные ресурса без загрузки в базу данных.

Приложение «HHFWTable» состоит из одного экрана, текстового представления «UITextView» и кнопки «UIButton»:

Примечание. При загрузке приложения выполняется аутентификация, кнопка недоступна. Если аутентификация выполнена успешно, то кнопка будет доступна и в текстовом поле появится надпись «Authentication success».

Для выполнения примера нажмите кнопку «Perform Table». При нажатии на кнопку инициализируется запрос к ресурсу. Сервер мобильной платформы возвращает соответствующие табличные данные без загрузки в базу данных.

Код приложения:

import UIKit
 
class ViewController: UIViewController {
 
    //MARK: - Outlets
    @IBOutlet weak var resultTextView: UITextView!
    @IBOutlet weak var tableRequestButton: UIButton!
 
    //MARK: - View life cycle
    override func viewDidLoad() {
        super.viewDidLoad()
        self.deactivateButtons()
        self.initializeFramework()
        self.auth {
            self.activateButtons()
            self.resultTextView.text = "Authentication success"
        }
    }
 
    //MARK: - Actions
    @IBAction func tableRequestPressed(_ sender: UIButton) {
        self.tableRequest { (jsonResult) in
            self.resultTextView.text = String(format: "%@", jsonResult)
        }
    }
 
    //MARK: - HHFW - Framework initialization
    private func initializeFramework() {
        let apiVersion: String = "v1"
        let host: String = "http://testmasterfmp.fsight.cloud/"
        let environment: String = "Leonid_environment"
        let project: String = "Leonid_project"
        let application: String = "app"
        let device: String = (UIDevice.current.identifierForVendor?.uuidString)!
        HHFWController.sharedInstance().initWithCredentials(
            apiVersion,
            host: host,
            environment: environment,
            project: project,
            application: application,
            device: device
        )
    }
 
    //MARK: - HHFW - Authentication
    private func auth(completion: @escaping ()->()) {
        let username: String = "Leonid"
        let password: String = "123123"
        HHFWController.sharedInstance().auth(username, password: password){ (jsonResult) in
            if let jsonDict = jsonResult as? NSDictionary,
                let status = jsonDict["status"] as? String, status == "ok" {
                print("Auth success")
                completion()
            } else {
                print("Auth error")
            }
        }
    }
 
    //MARK: - HHFW - Table request
    private func tableRequest(completion: @escaping (NSDictionary)->()) {
        let resourceName = "study"
        let tableCallParams = TableCallParams(defaultProperty: ())
        HHFWController.sharedInstance().table(resourceName, transactionID: nil, tableCallParams: tableCallParams) { (jsonResult) in
            if let jsonDict = jsonResult as? NSDictionary,
                let status = jsonDict["status"] as? String, status == "ok" {
                print("Table request success")
                completion(jsonDict)
            } else {
                print("Table request error")
            }
        }
    }
 
    //MARK: - View methods
    private func deactivateButtons() {
        self.tableRequestButton.isEnabled = false
    }
 
    private func activateButtons() {
        self.tableRequestButton.isEnabled = true
    }
}

Получение табличных данных без загрузки в базу данных (асинхронно)

Для получения табличных данных без загрузки в базу данных создайте приложение «HHFWTableAsync», в котором используются методы фреймворка:

Имя метода Краткое описание
initWithCredentials (_: host: environment: project: application: device:) Метод выполняет инициализацию фреймворка
auth (_: password:) Метод выполняет аутентификацию пользователя по логину и паролю
tableAsync (_: transactionID: tableCallParams: handler:) Метод асинхронно запрашивает и возвращает табличные данные ресурса без загрузки в базу данных

Приложение «HHFWTable» состоит из одного экрана, текстового представления «UITextView» и кнопки «UIButton»:

Примечание. При загрузке приложения выполняется аутентификация, кнопка недоступна. Если аутентификация выполнена успешно, то кнопка будет доступна, и в текстовом поле появится надпись «Authentication success».

Для выполнения примера нажмите кнопку «Perform Table Async». При нажатии на кнопку инициализируется асинхронный запрос к ресурсу. Сервер мобильной платформы возвращает соответствующие табличные данные без загрузки в базу данных.

Код приложения:

import UIKit
 
class ViewController: UIViewController {
 
    //MARK: - Outlets
    @IBOutlet weak var resultTextView: UITextView!
    @IBOutlet weak var tableRequestButton: UIButton!
 
    //MARK: - View life cycle
    override func viewDidLoad() {
        super.viewDidLoad()
        self.deactivateButtons()
        self.initializeFramework()
        self.auth {
            self.activateButtons()
            self.resultTextView.text = "Authentication success"
        }
    }
 
    //MARK: - Actions
    @IBAction func tableRequestPressed(_ sender: UIButton) {
        self.tableRequest { (jsonResult) in
            self.resultTextView.text = String(format: "%@", jsonResult)
        }
    }
 
    //MARK: - HHFW - Framework initialization
private func initializeFramework() {
        let apiVersion: String = "v1"
        let host: String = "http://testmasterfmp.fsight.cloud/"
        let environment: String = "DocumentationExampleEnv"
        let project: String = "DocumentationExampleProj"
        let application: String = "app"
        let device: String = (UIDevice.current.identifierForVendor?.uuidString)!
        HHFWController.sharedInstance().initWithCredentials(
            apiVersion,
            host: host,
            environment: environment,
            project: project,
            application: application,
            device: device
        )
    }
   
    //MARK: - HHFW - Authentication
private func auth(completion: @escaping ()->()) {
        let username: String = "test"
        let password: String = "test123"
        HHFWController.sharedInstance().auth(username, password: password){ (jsonResult) in
            if let jsonDict = jsonResult as? NSDictionary,
                let status = jsonDict["status"] as? String, status == "ok" {
                print("Auth success")
                completion()
            } else {
                print("Auth error")
            }
        }
    }
 
    //MARK: - HHFW - Table request
    private func tableRequest(completion: @escaping (NSDictionary)->()) {
        let resourceName = "FRUITS"
        let tableCallParams = TableCallParams(defaultProperty: ())
        HHFWController.sharedInstance().tableAsync(resourceName, transactionID: nil, tableCallParams: tableCallParams) { (jsonResult) in
            if let jsonDict = jsonResult as? NSDictionary,
                let status = jsonDict["status"] as? String, status == "ok" {
                print("Table request success")
                completion(jsonDict)
            } else {
                print("Table request error")
            }
        }
    }
    //MARK: - View methods
    private func deactivateButtons() {
        self.tableRequestButton.isEnabled = false
    }
 
private func activateButtons() {
        self.tableRequestButton.isEnabled = true
    }
}

См. также:

Примеры использования iOS-фреймворка | Примеры работы с ресурсами