变量显示为nil-Swift 4 IOS

时间:2018-12-06 09:28:46

标签: ios swift null var let

由于某种原因,我的变量stringy和stringy可以正常打印到控制台,但是当我尝试将其设置为标签时,它们显示为nil。

我的目标是将字符串和浮点数输出到应用程序视图控制器,但这是行不通的。

我认为它与viewdidload有关,好像它隐藏了全局变量一样。但是,如果我尝试将标签设置在viewdidload之外,则会出现声明错误。

            <div class="dropdown-menu dropdown-menu-right"
                 aria-labelledby="dropdownMenuButton">
              <a class="dropdown-item"
                 *ngIf="gridOptions.editMenu.link1Callback"
                 (click)="templateCellCallback(gridOptions.editMenu.link1Callback, gridRow)">{{gridOptions.editMenu.link1Label}}</a>
              <a class="dropdown-item"
                 *ngIf="gridOptions.editMenu.link2Callback"
                 (click)="templateCellCallback(gridOptions.editMenu.link2Callback, gridRow)">{{gridOptions.editMenu.link2Label}}</a>
              <a class="dropdown-item"
                 *ngIf="gridOptions.editMenu.link3Callback"
                 (click)="templateCellCallback(gridOptions.editMenu.link3Callback, gridRow)">{{gridOptions.editMenu.link3Label}}</a>
            </div>

1 个答案:

答案 0 :(得分:2)

第一件事是永远不要强行打开包装,直到您确定价值为止。在您的情况下,VNCoreModelRequest可能会失败,并且两个变量都将被取消分配,因此将导致应用程序崩溃。 还有一件事,请确保对标签使用正确的命名约定。

您的问题是您没有根据获得的结果设置标签值。

要解决此问题

 var stringy:String? {
    didSet {
        DispatchQueue.main.async {
            self.Labele.text = self.stringy
        }
    }
}

OR

        self.stringy = firstObservastion.identifier
        self.stringie = firstObservastion.confidence
        DispatchQueue.main.async {
             self.Labele.text = "Guess: \(stringy) + Certainty: \(stringie)"
         }