Как добавить код без использования init SwiftUI - PullRequest
0 голосов
/ 24 марта 2020

Я определяю mainArray как глобальную переменную, и она есть в моей функции инициализации:

init(post: Post, post2: [PostById]) {
    self.post = post
    self.post2 = post2

     if let posty = post {
       mainArray = self.post2.filter { i in i.album_id == posty.id }
        print("mainArray \(mainArray)")
       }
}


, которую я использую в списке следующим образом:

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(mainArray) { post in
                    Text("\(post.name ?? "title")")

                }


        }


проблема заключается в том, что я должен использовать функцию init, как это в моем ContentView: NavigationLink(destination: Album.init(post: post, post2: self.model2.postsById)), которая вызывает мою функцию init в моем ContentView, которую я не хочу вместо того, чтобы делать Album(post: post, post2: self.model2.postsById).

У меня вопрос, как я могу поместить

if let posty = post {
       mainArray = self.post2.filter { i in i.album_id == posty.id }
        print("mainArray \(mainArray)")
       }

вне моей функции инициализации, а также не объявлять mainArray как глобальную переменную и по-прежнему использовать его в моем списке?

1 Ответ

0 голосов
/ 24 марта 2020

Вы должны иметь возможность фильтровать при создании списка, тогда вам вообще не нужен mainArray

List(self.post2.filter { i in i.album_id == posty.id }) { post in
    Text("\(post.name ?? "title")")
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...