Swift Как преобразовать String из класса в переменную @State String? - PullRequest
1 голос
/ 04 августа 2020

Как я могу преобразовать эту переменную из моего класса в переменную @State в моем представлении? Я получаю исключение прямо сейчас:

Невозможно присвоить значение типа Binding типу String

В моем представлении:


 struct ContentView: View {

    //Error private members
    @State var alert = false
    @State var error = ""

    @EnvironmentObject var manager: HttpAuth

    func verify(){
    //Cannot assign value of type Binding<String> to type String
     self.error = $manager.error

   }
}

Внутри моего HttpAuth класс


    class HttpAuth: ObservableObject{
    
        //Error private members
        var alert = false
        var error: String = ""
    
        ..
    }

1 Ответ

2 голосов
/ 04 августа 2020

Здесь привязка не требуется, @State - это оболочка свойства, поэтому назначьте как свойство

func verify(){
   self.error = manager.error   // no $
}

Примечание: на самом деле вы можете использовать manager.error напрямую, w / o переназначение его для предоставления состояния, просто сделайте его @Published

class HttpAuth: ObservableObject{

    //Error private members
    var alert = false
    @Published var error: String = ""

единственным предупреждением (!), вы должны изменить это опубликованное error только в основной очереди, а затем все данные об использовании внутри View будут обновляться автоматически.

...