在Swift中选择列表的第一项
我正在学习使用Swift进行API调用的教程,但我只需要获取检索到的数组的第一项。因此,我的问题是:“选择JSON对象数组/字典的第一个元素的最佳方法是什么?” 我正在尝试几种方法,但它们在隧道的尽头没有给我任何启示 下面是示例代码 神奇宝贝在Swift中选择列表的第一项,swift,swiftui,Swift,Swiftui,我正在学习使用Swift进行API调用的教程,但我只需要获取检索到的数组的第一项。因此,我的问题是:“选择JSON对象数组/字典的第一个元素的最佳方法是什么?” 我正在尝试几种方法,但它们在隧道的尽头没有给我任何启示 下面是示例代码 神奇宝贝 import Foundation struct PokemonAPIList: Decodable { var results: [PokemonListEntry] } struct PokemonListEntry: Decodable
import Foundation
struct PokemonAPIList: Decodable {
var results: [PokemonListEntry]
}
struct PokemonListEntry: Decodable {
var name: String
var url: String
}
PokemonNetworkManager.swift
import Foundation
import SwiftUI
import Combine
class PokemonNetworkManager: ObservableObject {
@Published var results = [PokemonListEntry]()
init() {
guard let url = URL(string: "https://pokeapi.co/api/v2/pokemon?limit=151") else { return }
URLSession.shared.dataTask(with: url) { (data, _, _) in
guard let data = data else { return }
let pokemonList = try! JSONDecoder().decode(PokemonAPIList.self, from: data)
DispatchQueue.main.async {
self.results = pokemonList.results
}
}.resume()
}
}
ContentView.swift
import SwiftUI
struct ContentView: View {
@ObservedObject var networkingManager = PokemonNetworkManager()
var body: some View {
let bulbasaur = networkingManager.results.first
Text(bulbasaur!.name) //Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value
.bold()
}
/*THIS CODE BELOW WORKS
List(networkingManager.results, id:\.name) { pokemon in
Text(pokemon.name)
}
*/
#if DEBUG
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
#endif
我不知道您到底想要什么,但如果需要返回对象数组的第一个元素,您可以这样做:
array.first()
如果没有,请提供完整的代码以帮助您获取有关堆栈溢出的代码的帮助,您需要实际共享代码本身:请参阅。你说你有错误,但你没有说它们是什么,我们无法理解你的想法。它返回我以下错误:线程1:致命错误:在展开可选值时意外发现nil请参阅编辑的代码,因此数组是nil或其第一个元素。但是如果我将数组放入列表中,该代码可以工作,并向我显示了所有151个PokemonsTry
,如果让first=array.first{…}
。