, поэтому у меня есть этот файл, который получает массив JSON из конечной точки API, а затем должен присвоить его наблюдаемой переменной объекта, чтобы его можно было извлечь и повторить в foreach l oop. Я все еще новичок в Swift, но это выглядит так:
import SwiftUI
import Combine
import Foundation
public struct ActivityModel: Codable {
public let id: Int
public let name: String
public let activity_desc: String?
}
public struct ActivitiesModel2: Codable {
public let location: String
public let popular: [String:ActivityModel]
}
public struct ActivitiesModel: Codable {
public let activities: ActivitiesModel2
}
public class ActivityFetcher: ObservableObject {
var activities: [ActivitiesModel]()
init(){
guard let url = URL(string: "http://mywebsite.com/api/loadapi") else { return }
var urlRequest = URLRequest(url: url)
urlRequest.httpMethod = "POST"
URLSession.shared.dataTask(with: urlRequest) { (data, response, error) in
do {
if let d = data {
let decodedLists = try JSONDecoder().decode(ActivitiesModel.self, from: d)
DispatchQueue.main.async {
self.activities = [decodedLists]
}
print(self.activities)
print(decodedLists)
} else {
print("No Data")
}
} catch {
print("Error")
}
}.resume()
}
}
Код работает до того момента, когда я пытаюсь приравнять self.activities к decodedLists, потому что при печати decodedLists возвращает правильный массив из JSON API, печать self.activities после того, как я определил его как равный decodedLists, возвращает только: «[]». Почему он возвращает пустой массив, когда он четко определен при печати decodedLists, мне неизвестно. Я попытался снять скобки, подумав, что, может быть, это преобразование словаря в массив и потерпел неудачу, но я не могу удалить ни одну из скобок без возврата ошибки.