Итак, я учусь, как использовать SwiftUI с json API. В настоящее время я генерирую представления через список и ForEach L oop. Мне интересно, как я могу сделать так, чтобы он генерировал только первые, скажем, 10 элементов в массиве posts, вместо генерации всего списка из API. В основном я хочу использовать RandomElement () для отображения 10 случайных записей из всего массива. Я только начинаю здесь и учусь, поэтому любая помощь будет оценена.
Ниже приведен код моего основного представления, отображающего список
import SwiftUI
struct postList: View {
//state variable of the posts
@State var posts: [Post] = []
var array = [Post]()
var body: some View {
List {
ForEach(posts) { post in
VStack(alignment: .leading) {
Text(post.title)
.font(.headline)
Text(post.body)
.font(.callout)
}
.padding()
}
}
.onAppear() {
Api().getPosts { (posts) in
self.posts = posts
}
}
}
}
struct postList_Previews: PreviewProvider {
static var previews: some View {
postList()
}
}
Ниже приведен файл данных, который я использую для извлечения данных json
import SwiftUI
struct Post: Codable, Identifiable {
let id = UUID()
var title: String
var body: String
}
class Api {
func getPosts(completion: @escaping ([Post]) -> ()) {
guard let url = URL(string: "http://jsonplaceholder.typicode.com/posts") else { return }
URLSession.shared.dataTask(with: url) { (data, _, _) in
let posts = try! JSONDecoder().decode([Post].self, from: data!)
DispatchQueue.main.async {
completion(posts)
}
}
.resume()
}
}