Swift 개발 콩판 도서 응용 (5) 봉인 간단한 인터넷 요청 방법

3597 단어
마지막 코드 봐봐.
import UIKit
import AFNetworking
import MBProgressHUD
import Toast

extension NSObject {
    
    func GET(URLString:String, parameters:[String:AnyObject]?, showHUD:Bool = true, success:((AnyObject?) -> Void)?, failure:((NSError) -> Void)? ){
        let manager = AFHTTPSessionManager()
        manager.requestSerializer.timeoutInterval = 10
        let keyWindow = UIApplication.sharedApplication().delegate!.window!
        if showHUD {
            MBProgressHUD.showHUDAddedTo(keyWindow, animated: true)
        }
        manager.GET(URLString, parameters: parameters, success: { (operation, responseObject) -> Void in
            if showHUD {
                MBProgressHUD.hideAllHUDsForView(keyWindow, animated: true)
            }
            success?(responseObject)
            }, failure: { (aFHTTPRequestOperation, error) -> Void in
                if showHUD {
                    MBProgressHUD.hideAllHUDsForView(keyWindow, animated: true)
                    keyWindow?.makeDefaultToast("    ,     ")
                }
                failure?(error)
        })
    }
    
    func POST(URLString:String, parameters:[String:AnyObject]?, showHUD:Bool = true, success:((AnyObject?) -> Void)?, failure:((NSError) -> Void)?){
        let manager = AFHTTPSessionManager()
        manager.requestSerializer.timeoutInterval = 10
        let keyWindow = UIApplication.sharedApplication().keyWindow
        if showHUD {
            MBProgressHUD.showHUDAddedTo(keyWindow, animated: true)
        }
        manager.POST(URLString, parameters: parameters, success: { (operation, responseObject) -> Void in
            if showHUD {
                MBProgressHUD.hideAllHUDsForView(keyWindow, animated: true)
            }
            success?(responseObject)
            }, failure: { (aFHTTPRequestOperation, error) -> Void in
                if showHUD {
                    MBProgressHUD.hideAllHUDsForView(keyWindow, animated: true)
                    keyWindow?.makeDefaultToast("    ,     ")
                }
                failure?(error)
        })
    }
    
}

extension UIView {
    func makeDefaultToast(message:String) {
        makeToast(message, duration: 2, position: CSToastPositionCenter)
    }
}

import
Cocospods에 use를 넣습니다frameworks!설정하면 import UIKit와 같이 import에 해당하는pod libraries를 가져올 수 있으며bridge 파일에서 상응하는 헤더 파일을 가져올 필요가 없습니다.
extension NSObject
모든 클래스가 네트워크 요청을 위해 사용할 수 있기 때문에 NSObject 확장을 선택하십시오
방법의 매개 변수
  • URLString: 요청된 URL 주소 문자열
  • parameters: 매개 변수Dictionary, 선택할 수 있는 유형 설명은nil을 전달할 수 있습니다.Dictionary의 키는 문자열 형식이고value는AnyObject로 모든 Swift 기본 데이터 형식을 전달할 수 있음을 표시합니다.
  • showHUD: 이 인자를 전달하지 않습니다. 기본값은true입니다. 요청할 때 MBProgressHUD 몽골층이 튀어나와 사용자가 다른 조작을 하지 못하게 하고false는 백엔드에서 묵묵히 네트워크 요청을 하는 것을 사용자가 눈치채지 못하게 합니다.
  • success: 선택 가능한 유형, 성공적인 클로징을 요청합니다. 클로징의 매개 변수는 AnyObject?,요청이 성공적으로 반환된 데이터
  • 를 나타냅니다.
  • failure: 선택할 수 있는 종류입니다. 요청이 실패한 클립 클립입니다. 클립의 매개 변수는 NSError입니다. 함수 호출자가 스스로 이상을 처리해야 합니다.

  • 요청 단계
  • AFHttpSessionManager는AFNetworking3.0 이후 추천하는 http 요청 방식입니다. 대상을 초기화하고 네트워크 시간 초과를 설정합니다.
  • 복층 추가: MBProgressHUD를 Application의 키 윈도에 추가
  • AFHttpSessionManager 대상의 GET 또는 POST 방법을 호출
  • 요청 성공: 복층을 숨기고 success 클립을 호출합니다. 방법 이름 뒤에 추가합니까?success가 nil로 패키지를 닫으면 어떤 조작도 하지 않습니다. 그렇지 않으면 붕괴됩니다.
  • 요청 실패: 복층을 숨기고failure 클립을 호출합니다.

  • Toast


    github 주소:https://github.com/scalessec/Toast안드로이드 시스템과 같은 Toast 효과는 초점이 없고 상호작용을 막지 않으며 일정 시간이 지나면 자동으로 사라진다.주로 사용자에게 알림 메시지를 표시하는 데 사용

    좋은 웹페이지 즐겨찾기