【发布时间】:2020-07-26 11:15:11
【问题描述】:
struct Results: Codable {
let code: Int
let status: String
let data: DataClass
}
struct DataClass: Codable {
let surahs: [Surah]
let edition: Edition
}
struct Edition: Codable {
let identifier, language, name, englishName: String
let format, type: String
}
struct Surah: Codable, Identifiable{
var id: String{
return "\(number)"
}
let number: Int
let name, englishName, englishNameTranslation, revelationType: String
let ayahs: [Ayah]
}
struct Ayah: Codable, Identifiable{
var id: String{
return "\(number)"
}
let number: Int
let audio: String
let audioSecondary: [String]
let text: String
let numberInSurah, juz, manzil, page: Int
let ruku, hizbQuarter: Int
let sajda: Bool
}
这是我的打击
ContentView.swift
struct ContentView: View {
@ObservedObject var networkManager = NetworkManager()
var body: some View {
NavigationView{
List(networkManager.posts) {surah in
Text(surah.name)
}
.navigationBarTitle("Coran")
}
.onAppear {
self.networkManager.fetchData()
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
NetworkManager.swift
class NetworkManager : ObservableObject{
@Published var posts = [Surah]()
func fetchData() {
if let url = URL(string: "https://api.alquran.cloud/v1/quran/ar.alafasy"){
let session = URLSession(configuration: .default)
let task = session.dataTask(with: url) { (data, response, error) in
if error == nil {
let decoder = JSONDecoder()
if let safeData = data{
do{
let results = try decoder.decode(DataClass.self, from: safeData)
DispatchQueue.main.async {
self.posts = results.surahs
}
} catch{
print(error)
}
}
}
}
task.resume()
}
}
}
我尝试在我的 Swift 数据中调用此 URL,但我收到错误消息,我需要同样的帮助才能找到问题。 这是错误信息
keyNotFound(CodingKeys(stringValue: "surahs", intValue: nil), Swift.DecodingError.Context(codingPath: [], debugDescription: "No value associated with key CodingKeys(stringValue: \"surahs\", intValue: nil ) (\"surahs\").", 基础错误: nil))
【问题讨论】: