Fixing my swiftUI code

Job ID: 33531869

Budget: $10 – $30 USD

Hi,

When I try to get data from server with login credential and it doesn't work as expected. Please see my code beblow:import SwiftUI
import Combine

struct Response: Codable {
var results: [Result]
}
struct Result: Hashable, Codable {
var trackId: String
var friendId: String
var trackName: String
var trackUrl: String
var status: String

}
class blacklistViewModel: ObservableObject {
@Published var results = [Result]()
@KeyChain(key: "zid" ,account: "zLogin") var storedId
@KeyChain(key: "zpassword",account: "zLogin") var storedPassword
var cancellables = Set<AnyCancellable>()
init() {
fetch()
}
func fetch(){

guard let url = URL(string: appUrl + "getBlacklist.php") else { return }
let parameters = ["id" : String(data: self.storedId!, encoding: .utf8)!, "password": String(data: self.storedPassword!, encoding: .utf8)!]
var request = URLRequest(url:url)
request.httpMethod = "POST"
request.addValue("application/json;charset=utf-8", forHTTPHeaderField: "Content-Type")
guard let httpBody = try? JSONSerialization.data(withJSONObject: parameters, options: []) else { return }
request.httpBody = httpBody
URLSession.shared.dataTaskPublisher(for: request)
.subscribe(on: DispatchQueue.global(qos: .background))
.receive(on: DispatchQueue.main)
.tryMap(handleOutput)
.decode(type: [Result].self, decoder: JSONDecoder())
.sink{(completion) in

switch completion {
case .finished:

break

case .failure(_):

break

}
} receiveValue: { [weak self] (returnedPhotoModels) in
print(returnedPhotoModels)
self?.results = returnedPhotoModels
}.store(in: &cancellables)

}
private func handleOutput(output: URLSession.DataTaskPublisher.Output) throws -> Data {
guard let response = output.response as? HTTPURLResponse, response.statusCode >= 200 && response.statusCode < 300 else {
throw URLError(.badServerResponse)
}
return output.data
}
}

Please help me to fix it. I really need to use Combine for this
Related categories: Swift