为什么我的变量的值在Swift中恢复?

杰克·埃利亚

我的代码可以正常工作,但是我不知道为什么能工作。

拥有此prepareForSegue函数不起作用,并且在prepareForSegue转到的viewController中调用我的变量时,它将返回nil。

原始的VC:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == K.latinSegue {
        if latinTextField.text != nil && latinTextField.text != "" {
            guard let latinText = latinTextField.text else { fatalError("latinText broken")}
            let destinationVC = LatinViewController()
            destinationVC.latinText = latinText
            
        }
    }
}

destinationVC:

var latinText: String?

@IBOutlet weak var textLabel: UILabel!

override func viewDidLoad() {
    let latinTranslator = LatinTranslator()
    let latinDefinition = latinTranslator.getHTMLAndDefinition(latinText: **latinText!**)
    textLabel.text = latinDefinition
}

latinText!即使我在prese for segue函数中设置了它的值,在这里对其进行强行包装时也没有值。

现在,此代码有效。我有点知道静态变量是如何工作的,所以我对之前的代码为什么不起作用感到非常困惑-它抛出nil值未找到错误。

原来的VC:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == K.latinSegue {
        if latinTextField.text != nil && latinTextField.text != "" {
            guard let latinText = latinTextField.text else { fatalError("latinText broken")}
            LatinViewController.latinText = latinText
        }
    }
}

destinationVC:

static var latinText: String!

@IBOutlet weak var textLabel: UILabel!

override func viewDidLoad() {
    super.viewDidLoad()
    let latinTranslator = LatinTranslator()
    let latinDefinition = latinTranslator.getHTMLAndDefinition(latinText: LatinViewController.latinText)
    textLabel.text = latinDefinition
}

按下按钮时将调用segue。我检查了一下,只有一个。请帮忙!

亚当·普罗

您遇到的问题是,您正在创建的新实例,LatinViewController而不使用您的应用程序实际将要导航到的实例。

代替这个:


override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == K.latinSegue {
        if latinTextField.text != nil && latinTextField.text != "" {
            guard let latinText = latinTextField.text else { fatalError("latinText broken")}
            let destinationVC = LatinViewController()
            destinationVC.latinText = latinText
            
        }
    }
}

您应该这样做:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
   guard segue.identifier == K.latinSegue, let destination = segue.destination as? LatinViewController else {
      return
   }
   guard let text = latinTextField.text, !text.isEmpty else {
      return
   }
   destination.latinText = text
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我不能在WatchKit中更改全局变量的值-Swift?

来自分类Dev

为什么我不能访问全局变量中的值

来自分类Dev

为什么我的 DOM 变量保留值?

来自分类Dev

为什么我不能在Timer.scheduledTimer函数中更改变量的值?

来自分类Dev

为什么我无法在此方法中更改布尔变量的值

来自分类Dev

为什么我们在变量中获得不同的值

来自分类Dev

为什么我在 Flink 中的 MapState 变量没有保留以前的值?

来自分类Dev

为什么我的Swift字符串变量返回nil?

来自分类Dev

为什么我的Swift代码无法基于.json数据中的值正确计算分数

来自分类Dev

为什么我的Swift代码无法基于.json数据中的值正确计算分数

来自分类Dev

为什么我不能在Assembly中声明一个使用已取消引用的变量的值的变量?

来自分类Dev

为什么我所有变量的值都为None?

来自分类Dev

为什么我的变量没有从Firestore接收正确的值?

来自分类Dev

为什么我的函数不将值返回全局变量?

来自分类Dev

为什么我不能将插值变量用作varname?

来自分类Dev

为什么我的变量会重置其值?

来自分类Dev

为什么我的代码为变量给出错误的值?

来自分类Dev

为什么我的类变量在方法之间改变其值?

来自分类Dev

为什么 operator<< 重载改变了我的变量的值?

来自分类Dev

为什么我不观察我在 spyder 中创建的变量?

来自分类Dev

为什么我仍然需要拆开Swift字典值?

来自分类Dev

为什么我从SQLite数据库中选择的值不放入python变量中,而该变量不等于不同变量中的相同字符串?

来自分类Dev

为什么在 Swift 中包装可选值?是否可以在不声明类型的情况下将变量设置为可选?

来自分类Dev

为什么我们需要使用指针为Go / C中的变量分配值,而不是C#/ Java

来自分类Dev

为什么我的未初始化变量在TryParse中设置了值后又会再次取消赋值?

来自分类Dev

为什么我的变量递减?

来自分类Dev

为什么列表中的变量不符合我的期望?

来自分类Dev

为什么我们在Tensorflow中命名变量?

来自分类Dev

为什么我无法在jQuery中初始化变量?

Related 相关文章

  1. 1

    为什么我不能在WatchKit中更改全局变量的值-Swift?

  2. 2

    为什么我不能访问全局变量中的值

  3. 3

    为什么我的 DOM 变量保留值?

  4. 4

    为什么我不能在Timer.scheduledTimer函数中更改变量的值?

  5. 5

    为什么我无法在此方法中更改布尔变量的值

  6. 6

    为什么我们在变量中获得不同的值

  7. 7

    为什么我在 Flink 中的 MapState 变量没有保留以前的值?

  8. 8

    为什么我的Swift字符串变量返回nil?

  9. 9

    为什么我的Swift代码无法基于.json数据中的值正确计算分数

  10. 10

    为什么我的Swift代码无法基于.json数据中的值正确计算分数

  11. 11

    为什么我不能在Assembly中声明一个使用已取消引用的变量的值的变量?

  12. 12

    为什么我所有变量的值都为None?

  13. 13

    为什么我的变量没有从Firestore接收正确的值?

  14. 14

    为什么我的函数不将值返回全局变量?

  15. 15

    为什么我不能将插值变量用作varname?

  16. 16

    为什么我的变量会重置其值?

  17. 17

    为什么我的代码为变量给出错误的值?

  18. 18

    为什么我的类变量在方法之间改变其值?

  19. 19

    为什么 operator<< 重载改变了我的变量的值?

  20. 20

    为什么我不观察我在 spyder 中创建的变量?

  21. 21

    为什么我仍然需要拆开Swift字典值?

  22. 22

    为什么我从SQLite数据库中选择的值不放入python变量中,而该变量不等于不同变量中的相同字符串?

  23. 23

    为什么在 Swift 中包装可选值?是否可以在不声明类型的情况下将变量设置为可选?

  24. 24

    为什么我们需要使用指针为Go / C中的变量分配值,而不是C#/ Java

  25. 25

    为什么我的未初始化变量在TryParse中设置了值后又会再次取消赋值?

  26. 26

    为什么我的变量递减?

  27. 27

    为什么列表中的变量不符合我的期望?

  28. 28

    为什么我们在Tensorflow中命名变量?

  29. 29

    为什么我无法在jQuery中初始化变量?

热门标签

归档