Как отображать контент по id SwiftUI - PullRequest
0 голосов
/ 23 марта 2020

Итак, я получаю данные обратно так:

[Test.PostById(id: "9ffb2c83-45ed-4198-b6ab-9a259ef91b44", album_id: "9ffb2c83-45ed-4198-b6ab-9a259ef91b44", name: nil, path: "public/1584106997200-astronomy-space-abstract-galaxy.jpg"), Test.PostById(id: "7ac7ff5f-4b4b-458f-b9a6-491813dbe97d", album_id: "9ffb2c83-45ed-4198-b6ab-9a259ef91b44", name: Optional("California Wind "), path: "public/1584106997230-California_Wind.mp3"), Test.PostById(id: "d804c511-fdd6-453c-816d-fbe501b0ba8d", album_id: "9ffb2c83-45ed-4198-b6ab-9a259ef91b44", name: Optional("Cosmic Love "), path: "public/1584106997710-Cosmic_Love.mp3"), Test.PostById(id: "094e5b65-f0b2-4a5d-8c20-c6fa3d733325", album_id: "9ffb2c83-45ed-4198-b6ab-9a259ef91b44", name: Optional("Happy Sixth "), path: "public/1584106997890-Happy_Sixth.mp3"), Test.PostById(id: "f148fd8e-6896-492b-8e5a-c99072cad562", album_id: "9ffb2c83-45ed-4198-b6ab-9a259ef91b44", name: Optional("How it Began "), path: "public/1584106998000-How_it_Began.mp3")]
[Test.PostById(id: "fa3d34ed-325b-479e-8b8f-c59831f0790d", album_id: "fa3d34ed-325b-479e-8b8f-c59831f0790d", name: nil, path: "public/1584040654626-home-icon.jpg"), Test.PostById(id: "42a3c308-8d03-47a9-9723-d66013f6fcca", album_id: "fa3d34ed-325b-479e-8b8f-c59831f0790d", name: Optional("A Typical Ride Out "), path: "public/1584040654632-A_Typical_Ride_Out.mp3"), Test.PostById(id: "938f642d-db6f-4519-b575-1e1598f5fae7", album_id: "fa3d34ed-325b-479e-8b8f-c59831f0790d", name: Optional("Because For Everything There Is Someone "), path: "public/1584040654799-Because_For_Everything_There_Is_Someone.mp3"), Test.PostById(id: "6313b82f-672f-4cc7-9ccb-ae0e24e2fef8", album_id: "fa3d34ed-325b-479e-8b8f-c59831f0790d", name: Optional("California Wind "), path: "public/1584040655221-California_Wind.mp3")]
[Test.PostById(id: "f1567e48-eb24-4ccc-b24d-6c7c9c99e326", album_id: "f1567e48-eb24-4ccc-b24d-6c7c9c99e326", name: nil, path: "public/1584038265741-Profile-img-icon.png"), Test.PostById(id: "4e9d5c31-d48e-4d0a-8f26-ba67d1ac39c2", album_id: "f1567e48-eb24-4ccc-b24d-6c7c9c99e326", name: Optional("Prophet 7 "), path: "public/1584038265742-Prophet_7.mp3"), Test.PostById(id: "71b80407-2434-445e-8e0b-30e1a45293a7", album_id: "f1567e48-eb24-4ccc-b24d-6c7c9c99e326", name: Optional("Rubber Ducky "), path: "public/1584038265907-Rubber_Ducky.mp3"), Test.PostById(id: "0069ba6a-85c2-48d8-b5bd-d0e70c84bea2", album_id: "f1567e48-eb24-4ccc-b24d-6c7c9c99e326", name: Optional("Shameless Life Wisdom Sendoff "), path: "public/1584038265996-Shameless_Life_Wisdom_Sendoff.mp3")]

И я передаю их в моем ContentView:

struct ContentView: View {
  @ObservedObject var model = PostListViewModel()
  @ObservedObject var model2 = PostListViewByIdModel()

        var body: some View {

            NavigationView {
                List(model.posts) { post in
                 VStack{
                        Text("Title: ").bold()
                            + Text("\(post.title)")
                    NavigationLink(destination: Album(post: post, post2: self.model2.postsById)) {
                      ImageView(withURL: "http://localhost:8000/\(post.path.replacingOccurrences(of: " ", with: "%20"))")
                        }
                        Text("Description: ").bold()
                       + Text("\(post.description)")


                        }


                }


    }
                  .onReceive(model.$posts) { posts in
                     self.model2.fetchPostsById(for: posts)     
                   }


}

}

on line: Album(post: post, post2: self.model2.postsById) где self.model2.postById это все мои данные. Как вы можете видеть выше, я также передаю сообщение, которое можно идентифицировать, поэтому каждый элемент списка, который я нажимаю, имеет свою собственную идентификацию, которую я использую здесь:

struct Album: View {
    var post:Post
    var post2:[PostById]

    var body: some View {

             VStack {
                Text("Title: ").bold()
                    + Text("\(post.title)")
                ImageView(withURL: "http://localhost:8000/\(post.path.replacingOccurrences(of: " ", with: "%20"))")
                    Text("Description: ").bold()
                        + Text("\(post.description)")
                List() { post in
                    Text("\(post.name)")

                }
          }


    }


 }

Что я пытаюсь сделать, это сделать убедитесь, что идентификатор album_id или первый идентификатор массива для post2 совпадает с идентификатором для post, поэтому данные, полученные в моем списке, совпадают с id и данными из post.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...