Search This Blog

Thứ Năm, 28 tháng 12, 2017

Các bước lấy JSON in IOS


// hàm lấy json

class chính : 

func getApi9list() {
        
            APIManager.sharedInstance.getApi9list { (arrCate, error , data) in
                
                if error == "" {
                    
                 
                    
                }else {
                    AlertBar.show(.error, message: Configs.String_GetApiError, duration: 3)
                }
           }
        

}



// class APIManager

import UIKit
import Alamofire

class APIManager: NSObject {
    
    static let sharedInstance = APIManager()
    
    
    
    public func getApi9list(completion: @escaping(NSArray,String,Data) -> Void){
        
        let url = "https://api.tuoitre.vn/mobileapp/home?token=da039e81&type=9list"
        
       
        Alamofire.request(url).responseJSON { respone  in
            
            if let data = respone.data {
                let (arrGet,error) = ModelNews().parseItemWithData(data: data as NSData, type: BlockType.None )
                completion(arrGet,error as String,data)
            }
            else {
                
                completion(NSArray(),"error",Data())
            }
        }
        
    }

// func parseItemWithData 

func parseItemWithData(data:NSData, type:BlockType )->(NSArray,NSString){
        
            do {
                
                let parseJSON = try JSONSerialization.jsonObject(with: data as Data, options: .allowFragments)
                
                if let arr_cate = parseJSON as? NSArray {
                    
                        let arr_cate_get = NSMutableArray()
                        let cateGet = ModelCate()
                        let arrRelated = NSMutableArray()
                        
                        for itemRelated  in arr_cate {
                            
                                if  let itemRelatedDir = itemRelated as? [String: Any] {
                                    
                                    let (model,_) = parseWithDic(dictionary: itemRelatedDir)
                                    
                                    arr_cate_get.add(model)
                                    
                                }
                           
                        }
                        
                        
                    
                        return (arr_cate_get,"")
                }
                
            } catch let error as NSError {
                print("Failed to load: \(error.localizedDescription)")
                
            }
        
            return (NSArray(),"error")
    }



func parseWithDic (dictionary: [String: Any])->(ModelNews,NSString){
        
        let modelNewsGet = ModelNews()
       
        
            if let object_id = dictionary["object_id"] as? String {
                modelNewsGet.m_object_id = object_id
            }
            if let title = dictionary["title"] as? String {
                modelNewsGet.m_title = editTitle(title: title)
            }
            if let description = dictionary["description"] as? String {
                modelNewsGet.m_description = description
            }
            if let object_url = dictionary["object_url"] as? String {
                modelNewsGet.m_object_url = object_url
            }
            if let layout = dictionary["layout"] as? String {
                modelNewsGet.m_layout = layout
            }
            if let sport = dictionary["sport"] as? Int {
                modelNewsGet.m_sport = sport
            }
            if let object_content = dictionary["object_content"] as? String {
                modelNewsGet.m_object_content = object_content
            }
            if let thumb_link = dictionary["thumb_link"] as? String {
                modelNewsGet.m_thumb_link = thumb_link
            }
            if let thumb_caption = dictionary["thumb_caption"] as? String {
                modelNewsGet.m_thumb_caption = thumb_caption
            }
            if let time_published = dictionary["time_published"] as? String {
                modelNewsGet.m_time_published = time_published
            }
           
        
            return (modelNewsGet,"")
           
    }










Không có nhận xét nào:

Đăng nhận xét