Search code examples
iosarraysswiftrequestmode

How i can using Array from server and display in service


I have this response from the server using POST METHOD

{
    "jsonrpc": "2.0",
    "id": null,
    "result": [
    "alaa",
    "belal",
    "demo"
    "mohanad"
    ]
}

How can I get data into the server and save in model? this is my server request using Alamofire

class servicedb: NSObject{

    class func dbs (completion: @escaping (_ error: Error?, _ db: ([Database]))->Void){
        let url = "http://176.58.117.249/web/database/list"
        let header = ["Content-Type" : "application/json"]


        Alamofire.request(url, method: .post, parameters: nil, encoding: URLEncoding.default, headers:header)
            .responseJSON{ response in
                switch response.result
                {
                case.failure(let error):
                    print (error)


                case .success(let value):
                    let json = JSON(value)
                    guard let results = json ["result"].array else
                    { return }

                    var dbs = [Database]()
                    for data in results {
                        guard let data = data.dictionary else {
                            return }

                        let datab = Database()
                        datab.result = data["result"]?.string ?? ""

                        dbs.append(datab)

                    }
                    completion(nil,dbs)

                }
        }
    }
}

and My data model is to save data

class Database: NSObject {
    var id: Int = 0
    var result : String = ""
}

the response is not coming in my web service and not store data in the data model. thanks in advance


Solution

  • in your web services pass a parameter as nil then give a filer and pass as String "{}" give a success response.

    Your web services response is in [String] so you can use like that.

    class func dbs (completion: @escaping (_ error: Error?,  _ db: ([String]))->Void){
        let url = "http://176.58.117.249/web/database/list"
        let header: [String:String] = ["Content-Type" : "application/json"]
    
        let parameters = [:] as [String : Any]
    
    
    
        do {
            let postData = try JSONSerialization.data(withJSONObject: parameters, options: [])
            let urlStr = URL(string: url)
            let urlRequest = URLRequest(url: urlStr!)
    
            var request = try URLEncoding.queryString.encode(urlRequest, with: parameters)
            request.httpMethod = "POST"
            request.httpBody = postData as Data
    
            for headerValue in header{
                request.addValue(headerValue.value, forHTTPHeaderField: headerValue.key)
            }
    
            Alamofire.request(request).responseJSON{ response in
                switch response.result
                {
                case.failure(let error):
                    print (error)
    
    
                case .success(let value):
                    let json = JSON(value)
                    guard let results = json ["result"].array else
                    { return }
    
                    var dbs = [String]()
                    for data in results {
                        dbs.append(data.string ?? "")
                    }
                    completion(nil,dbs)
    
                }
            }
        }
        catch let error{
            print(error.localizedDescription)
        }
    }