swift-viewModel以聯繫人信息爲例

寫這個是因爲需要關聯之前客戶的信息,而且客戶信息的viewmodel、model都複雜了太多,需要減少

//
//  ContactViewModel.swift
//  yadaService
//
//  Created by 小海馬 on 2018/6/15.
//  Copyright © 2018 . All rights reserved.
//
//  聯繫人視圖模型

import UIKit
import Alamofire
import SwiftyJSON

class ContactViewModel {
    //單例:避免重複比沙盒加載歸檔文件,提高效率,便於被訪問到
    static let sharedContact=ContactViewModel()
    
    var contactList:[Contact] = []
    
    ///返回歸檔保存的路徑  計算型屬性(類似於有返回值的函數)
    var contactesPath: String {
        let path = NSSearchPathForDirectoriesInDomains(.documentDirectory , .userDomainMask, true).last!
        return (path as NSString).appendingPathComponent("contactes.plist")
    }
    
    
}

extension ContactViewModel{
    //獲取客戶的地址信息
    func requestContactesInfo(url:String,method:HTTPMethod,parameters:Parameters
        ,finished: @escaping (_ isSuccess:Bool,_ contactList:[Contact])->()){
        
        request(url,method:method,parameters:parameters).responseJSON{ response in
            if response.result.isSuccess{
                let value = response.result.value
                let result=JSON(value as Any)
                let data = result["data"]   //取到數組
                
                //請求一次永遠只有一組數據
                self.contactList=[Contact]()
                for index  in 0...(data.count-1){
                    //這裏需要-1,因爲數據從0開始計數,會多一個出來導致崩潰
                    let contact:Contact=Contact.init(dict:data[index].dictionaryObject! as [String : AnyObject]);
                    self.contactList.append(contact)    //創建一個數組,但此時還在狄安娜的大地圖中,不能直接用
                }
                finished(true,self.contactList)
            }else {
                finished(false, [])
            }
        }
    }
    
    //新增
    func increaseContactInfo(url:String,method:HTTPMethod,parameters:Parameters
        ,finished: @escaping (_ isSuccess:Bool,_ contactList:[Contact])->()){
        
        request(url,method:method,parameters:parameters).responseJSON{ response in
            if response.result.isSuccess{
                finished(true,self.contactList)
            }else {
                finished(false, [])
            }
        }
    }
    
    //刪除
    func deleteContactInfo(url:String,method:HTTPMethod,parameters:Parameters
        ,finished: @escaping (_ isSuccess:Bool,_ contactList:[Contact])->()){
        
        request(url,method:method,parameters:parameters).responseJSON{ response in
            if response.result.isSuccess{
                finished(true,self.contactList)
            }else {
                finished(false, [])
            }
        }
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章