«Слабый» может быть применен только к классу и типу протокола, привязанного к классу, но не «ContentView», что мне не хватает? - PullRequest
0 голосов
/ 06 января 2020

Я пытаюсь запустить этот код, но я получаю предупреждение в закрытии ... любая помощь, чтобы решить это? Чтобы запустить фильтр функций в фоновом потоке, я предложил запустить init с функцией фильтра.

Но, получив это предупреждение в закрытии:

'слабый' может быть применен только к класс и типы протокола с привязкой к классу, а не ContentView

import SwiftUI

struct ContentView: View {
    @ObservedObject var dm: DataManager
    @State private var searchTerm : String = ""
    @State var filteredAirports: [AirportModel] = []
    init(dataM: DataManager) {
        self.dm = dataM
        dm.filter(valoreSearhed: searchTerm, arrayTosearh: dm.airportVector, closure: { [weak self] in
            self?.filteredAirports = $0 })
    }
    var body: some View {
        VStack {
            SearchBar(text: $searchTerm)

            List {
                ForEach(filteredAirports) { valore in
                    Text(valore.aptICAO)
                }
            }
        }
    }
}


struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView(dataM: DataManager())
    }
}

Ответы [ 2 ]

2 голосов
/ 06 января 2020

weak - модификатор для ссылочных типов (ie. Слабый указатель, допускается обнуление, когда все ссылки освобождены). Но ваш ContentView - это struct, который является типом значения.

1 голос
/ 06 января 2020

Удалить [weak self], поскольку он используется для типов ссылок, таких как классы, в то время как ContentView является типом значения struct

...