Я хочу создать свой собственный класс сетевого менеджера, чтобы можно было обрабатывать ошибки глобально, например, при отсутствии Интернета, тогда я мог бы показывать всплывающие окна только из этого класса. Я использую для этого Alamofire, а также хочу проанализировать данные в формате JSON с помощью библиотеки SwiftJSON. Я попробовал использовать свой код, но не смог передать данные из моего сетевого класса туда, где вызывается функция.
import UIKit
import Alamofire
import SwiftyJSON
import SystemConfiguration
class WebServiceHelper: NSObject {
typealias SuccessHandler = (JSON) -> Void
typealias FailureHandler = (Error) -> Void
// MARK: - Internet Connectivity
class func isConnectedToNetwork() -> Bool {
var zeroAddress = sockaddr_in()
zeroAddress.sin_len = UInt8(MemoryLayout.size)
zeroAddress.sin_family = sa_family_t(AF_INET)
guard let defaultRouteReachability = withUnsafePointer(to: &zeroAddress, {
$0.withMemoryRebound(to: sockaddr.self, capacity: 1) {
SCNetworkReachabilityCreateWithAddress(nil, $0)
}
}) else {
return false
}
var flags: SCNetworkReachabilityFlags = []
if !SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags) {
return false
}
let isReachable = flags.contains(.reachable)
let needsConnection = flags.contains(.connectionRequired)
return (isReachable && !needsConnection)
}
// MARK: - Helper Methods
class func getWebServiceCall(_ strURL : String, isShowLoader : Bool, success : @escaping SuccessHandler, failure : @escaping FailureHandler) {
if isConnectedToNetwork() {
print(strURL)
if isShowLoader == true {
//AppDelegate.getDelegate().showLoader()
}
AF.request(strURL).responseJSON { (resObj) -> Void in
print(resObj.result)
}
}else {
//CommonMethods.showAlertWithError("", strMessage: Messages.NO_NETWORK, withTarget: (AppDelegate.getDelegate().window!.rootViewController)!)
}
}
}
//вызов с контроллера
func getData() {
WebServiceHelper.getWebServiceCall("http://3.16.229.165/webservice/getFollowingList", isShowLoader: false, success: { (responceObj) in
print("success => \(responceObj)")
}
, failure: { (failureObj) in
print("failureObj = \(failureObj)")
})
}
// Данные ответа API
{
"status": false,
"followers": false,
"message": "You are not yet following anyone"
}
Подробнее здесь: https://stackoverflow.com/questions/673 ... -alamofire
Как отделить класс вызова API в Swift с Alamofire? ⇐ IOS
Программируем под IOS
-
Anonymous
1737823204
Anonymous
Я хочу создать свой собственный класс сетевого менеджера, чтобы можно было обрабатывать ошибки глобально, например, при отсутствии Интернета, тогда я мог бы показывать всплывающие окна только из этого класса. Я использую для этого Alamofire, а также хочу проанализировать данные в формате JSON с помощью библиотеки SwiftJSON. Я попробовал использовать свой код, но не смог передать данные из моего сетевого класса туда, где вызывается функция.
import UIKit
import Alamofire
import SwiftyJSON
import SystemConfiguration
class WebServiceHelper: NSObject {
typealias SuccessHandler = (JSON) -> Void
typealias FailureHandler = (Error) -> Void
// MARK: - Internet Connectivity
class func isConnectedToNetwork() -> Bool {
var zeroAddress = sockaddr_in()
zeroAddress.sin_len = UInt8(MemoryLayout.size)
zeroAddress.sin_family = sa_family_t(AF_INET)
guard let defaultRouteReachability = withUnsafePointer(to: &zeroAddress, {
$0.withMemoryRebound(to: sockaddr.self, capacity: 1) {
SCNetworkReachabilityCreateWithAddress(nil, $0)
}
}) else {
return false
}
var flags: SCNetworkReachabilityFlags = []
if !SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags) {
return false
}
let isReachable = flags.contains(.reachable)
let needsConnection = flags.contains(.connectionRequired)
return (isReachable && !needsConnection)
}
// MARK: - Helper Methods
class func getWebServiceCall(_ strURL : String, isShowLoader : Bool, success : @escaping SuccessHandler, failure : @escaping FailureHandler) {
if isConnectedToNetwork() {
print(strURL)
if isShowLoader == true {
//AppDelegate.getDelegate().showLoader()
}
AF.request(strURL).responseJSON { (resObj) -> Void in
print(resObj.result)
}
}else {
//CommonMethods.showAlertWithError("", strMessage: Messages.NO_NETWORK, withTarget: (AppDelegate.getDelegate().window!.rootViewController)!)
}
}
}
//вызов с контроллера
func getData() {
WebServiceHelper.getWebServiceCall("http://3.16.229.165/webservice/getFollowingList", isShowLoader: false, success: { (responceObj) in
print("success => \(responceObj)")
}
, failure: { (failureObj) in
print("failureObj = \(failureObj)")
})
}
// Данные ответа API
{
"status": false,
"followers": false,
"message": "You are not yet following anyone"
}
Подробнее здесь: [url]https://stackoverflow.com/questions/67398017/how-to-separate-api-calling-class-in-swift-with-alamofire[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия