如何parsing提供更多数据的另一个url的json数据

我有点困惑,我将如何parsing一个json API给我20个对象,然后给我一个“下一个”的关键有一个url,给了我另外20个对象。 我正在使用这个口袋妖怪API 。 它给了我4个键: 计数,上一个,结果下一个 。 我试图在集合视图中显示它们,但不是全部同时显示。 我想在集合视图向下滚动时加载更多。

我只是想要得到这个名字。 这就是我的代码的样子。

视图控制器

Json func

口袋妖怪班

我得到它加载收集视图中的第一个20口袋妖怪。 不过我不知道如何加载下一个20口袋妖怪或20后。 这是如果链接不起作用的json文件的样子。

口袋妖怪api结构

我将不胜感激任何帮助。 🙂

您可以尝试使用重用loadPokemonsData函数的recursion函数,如下所示:

 func loadPokemonsData(url: String, quantity: Int?) { let request = URLRequest(url: URL(string: url)!) let task = URLSession.shared.dataTask(with: request) { (data, response, error) in if error != nil { print(error!) } do { let jsonResults = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as! NSDictionary let pokemonArray = jsonResults.value(forKey: "results") as! [[String: Any]] var isPokemonsEqualsToQuantity: Bool = false for pokemonData in pokemonArray { if let quantity = quantity { guard self.pokemons.count < quantity else { isPokemonsEqualsToQuantity = true break } } guard let name = pokemonData["name"] as? String else { return } self.pokemon = Pokemon(name: name) self.pokemons.append(self.pokemon) } guard let nextURL = jsonResults.value(forKey: "next") as? String, !isPokemonsEqualsToQuantity else { for pokemon in self.pokemons { print(pokemon.name) } print(self.pokemons.count) return } self.loadPokemonsData(url: nextURL, quantity: quantity) } catch let err as NSError { print(err.localizedDescription) } } task.resume() } 

附加algorithmfunction运行屏幕…它打印791小宠物。

在这里输入图像说明

希望它可以帮助你!

EDITED

下一次你问你的代码吧…这会更容易帮助你!

  • 我已经更新了代码来设置你想要的数量(如果你想获得所有的小宠物,零),因此它只会得到小宠物的顺序API返回它,如果你想从所有小宠物特定的小宠物,你可以做一个获得所有小宠物后进行sorting。