Мне нужно добавить author_id
в апи, чтобы он выдавал мне все статьи автора.
Здесь, в SelectedAuthorView
, я получаю связанные authorPost
. В этом authorPost
тоже есть author_id
.
Ниже мой SelectedAuthorView
, здесь я пытался получить данные API, но сначала я не хочу получать API внутри представления. Второй я не знаю как перенести этот выбранный авторский пост себе в AuthorService
struct SelectedAuthorView: View {
var authorPost: AuthorPost
var body: some View {
NavigationView {
VStack {
AuthorListElementView(authorPost: authorPost)
if let selectedAuthorUrl = URL(string:"http://xxxx\(authorPost.author_id)/") {
let session = URLSession(configuration: .default)
var request = URLRequest(url: selectedAuthorUrl)
request.httpMethod = "GET"
do {
request.httpBody = try JSONSerialization.data(withJSONObject: Any, options: .prettyPrinted)
} catch let error {
print(error.localizedDescription)
}
}
}
}
}
}
}
Также это API, который мне нужен для получения данных из [![введите описание изображения здесь][1]][1]
Требуется помощь, чтобы получить данные из этого API.
Вы можете использовать ViewModel
: ObservableObject
И ваш код будет таким:
The viewModel
:
class ViewModel : ObservableObject {
func fetchData(authorPost: AuthorPost){
if let selectedAuthorUrl = URL(string:"http://yazar.io/api/author/article/list/\(authorPost.author_id)/") {
let session = URLSession(configuration: .default)
var request = URLRequest(url: selectedAuthorUrl)
request.httpMethod = "GET"
do {
request.httpBody = try JSONSerialization.data(withJSONObject: Any, options: .prettyPrinted)
} catch let error {
print(error.localizedDescription)
}
}
}
}
.
struct SelectedAuthorView: View {
var authorPost: AuthorPost
@ObservedObject var viewModel = ViewModel()
var body: some View {
NavigationView {
VStack {
AuthorListElementView(authorPost: authorPost)
}
}.onAppear{
self.viewModel.fetchData(authorPost:authorPost)
}
}
}
}
@MertKöksal Я обновил свой ответ, теперь он должен работать на вас
Спасибо, но у меня ошибка внутри selectedAuthorView.
Я не знаю, как // -- > здесь вам нужно поместить полученные данные в authorPost