我正在try 创建一个CRM应用程序,为此,我在我的树莓PI上创建了一个数据库,并使用PHP在URL上创建了JSON结果.
现在,我已经在Swift中创建了下面的网络管理器,但Catch中结尾处的validData错误一直被抛出.我做错了什么?
import Foundation
final class NetworkManager {
static let shared = NetworkManager()
static let baseURL = ""
private let buyersURL = baseURL + ""
private init(){}
func getBuyers(completed: @escaping (Result<[Buyer], CRMError>) -> Void) {
guard let url = URL(string: buyersURL) else {
completed(.failure(.invalidURL))
return
}
let task = URLSession.shared.dataTask(with: URLRequest(url: url)) { data, response, error in
if let _ = error {
completed(.failure(.unableToComplete))
return
}
guard let response = response as? HTTPURLResponse, response.statusCode == 200 else {
completed(.failure(.invalidResponse))
return
}
guard let data = data else {
completed(.failure(.invalidData))
return
}
do {
let decoder = JSONDecoder()
let decodedResponse = try decoder.decode(BuyerResponse.self, from: data)
completed(.success(decodedResponse.request))
} catch {
completed(.failure(.invalidData))
}
}
task.resume()
}
}
以下是URL上的JSON的结果
以下是我的买家 struct :
import Foundation
struct Buyer: Codable, Identifiable, Hashable{
let id: Int
let user_id: Int
let name: String
let email: String
let country: String
let phone: String
let second_phone: String
let whishes: String
let budget: String
let timing: String
let fase: String
let media: String
let plans: String
let extra: String
let hot: Int
}
struct BuyerResponse : Codable {
let request: [Buyer]
}
这就是我所说的吸引买家的观点:
struct BuyersView: View {
@StateObject var viewModel = BuyersViewModel()
@State var path = NavigationPath()
@State private var buyers: [Buyer] = []
var body: some View {
NavigationStack(path: $path) {
VStack{
CategoryView(categories: viewModel.fases, currentSelection: $viewModel.currentFase)
HStack{
Spacer()
NavigationLink("Add buyer", value: 0)
.padding()
}
List(buyers){ buyer in
BuyerCellView(buyer: buyer)
}
}
// .navigationDestination(for: Int.self) { _ in
// AddBuyerView(path: $path, fases: viewModel.fases, medias: $viewModel.media)
// }.navigationDestination(for: Buyer.self) { buyer in
// BuyerDetailView(buyer: buyer)
// }
}.onAppear{
getBuyers()
}
}
func getBuyers() {
NetworkManager.shared.getBuyers { result in
DispatchQueue.main.async {
switch result {
case .success(let buyers):
self.buyers = buyers
case .failure(let error):
print(error.localizedDescription)
}
}
}
}
}
我判断了JSON上的变量和Buyer的 struct 是相同的,但错误一直在发生,我只是希望变量Buyers从JSON返回买家列表.
我在视频的大约6个小时里按照https://www.youtube.com/watch?v=b1oC7sLIgpI&t=22362s的教程进行了
感谢您提前提供帮助