在 Swift 中获取列表的第一项 [关闭]

Posted

技术标签:

【中文标题】在 Swift 中获取列表的第一项 [关闭]【英文标题】:Take the first item of a list in Swift [closed] 【发布时间】:2020-12-15 18:12:52 【问题描述】:

我正在按照教程使用 Swift 进行 API 调用,但我只需要获取检索到的数组的第一项。所以,我的问题是:“选择 JSON 对象数组/字典的第一个元素的最佳方法是什么?”。

我正在尝试几种方法,但它们在隧道尽头没有亮光。

这是示例代码。

PokemonAPIList.swift

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

【问题讨论】:

要获得有关 Stack Overflow 代码的帮助,您需要实际共享代码本身:请参阅 minimal reproducible example。你说你得到了错误,但你没有说它们是什么,我们无法读懂你的想法。 【参考方案1】:

我不知道你到底想要什么,但如果你需要返回对象数组的第一个元素,你可以这样做:

array.first()

如果没有,请提供完整的代码以帮助您

【讨论】:

它返回以下错误:线程 1:致命错误:在展开可选值时意外发现 nil 查看修改后的代码 所以要么数组是 nil,要么是它的第一个元素。 但如果我将数组放入 List 中,代码会运行并显示所有 151 个口袋妖怪 试试if let first = array.first ...

以上是关于在 Swift 中获取列表的第一项 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

提取每个子列表的第一项

删除列表列表中的第一项 - 制作副本而不是就地修改

markdown列表

MVC 模型绑定到列表 - 仅适用于列表中的第一项

在带有数字的列表中查找具有字母优先级的第一项

jquery ui自动完成仅显示数据库中的第一项