为啥我的 iOS 应用程序中的变量或强制转换为空? [复制]

Posted

技术标签:

【中文标题】为啥我的 iOS 应用程序中的变量或强制转换为空? [复制]【英文标题】:Why are my variable or cast empty in my iOS app? [duplicate]为什么我的 iOS 应用程序中的变量或强制转换为空? [复制] 【发布时间】:2020-11-30 19:00:45 【问题描述】:

我正在 Xcode 上为 ios 编写一个应用程序,我想将一个变量发送到另一个尚未出现的 ViewController。问题是,当我像这样为未来的 ViewController 创建一个变量时:

guard let EndConfiguration = self.storyboard?.instantiateViewController(withIdentifier: EndConfiguration) as? EndConfiguration else
        
            fatalError("Impossible d'acceder correctement au cellules des alarmes")
        

我正在尝试这样做:

EndConfiguration.ModeleOutlet.text = Alarme.shared.Alarmes[indexPath.row].Modele

我收到此错误:

致命错误:在隐式展开时意外发现 nil 可选值

我理解 Optionels,但如果我添加“?”在 ModeleOutlet 之后它将删除错误,但文本在我的其他 ViewController 中保持不变。我确定我修改的值是满的,不用担心。

我正在复制我的问题,因为有人关闭了它,因为当根本没有解决方案时,已经有了解决方案。

提前谢谢你。

【问题讨论】:

【参考方案1】:
try this 
guard let EndConfiguration = self.storyboard?.instantiateViewController(withIdentifier: EndConfiguration) as? EndConfiguration else
        
            fatalError("Impossible d'acceder correctement au cellules des alarmes")
        
_ = EndConfiguration.view
EndConfiguration.ModeleOutlet.text = Alarme.shared.Alarmes[indexPath.row].Modele

【讨论】:

感谢您的回复,事实上,添加命令行的事实并没有给我关于可选选项的更多错误。但不幸的是,我仍然无法修改我的变量或我的 Outlet。如果我打印我的变量“EndConfiguration”,我会得到:“”,这很好吗?谢谢【参考方案2】:

我假设ModeleOutlet 的类型是Label 或可能包含文本变量的其他类型。

如果 ModeleOutlet 确实是通过故事板附加的标签,那么我敦促您阅读 ViewController 生命周期。这是一篇很棒的文章描述它:https://medium.com/good-morning-swift/ios-view-controller-life-cycle-2a0f02e74ff5

现在,为了具体回答您的问题,您可能希望在视图控制器中创建一个单独的变量,然后在函数中设置文本变量 viewDidLoad

class EndConfiguration: UIViewController 
    public var sharedText: String?

    @IBOutlet var ModeleOutlet: UILabel?

    func viewDidLoad() 
        super.viewDidLoad()

        self.ModeleOutlet?.text = sharedText
    



【讨论】:

感谢您的回复,我阅读了您发给我的内容,非常感谢它启发了我。所以我在我的 EndConfiguration: ibb.co/6FRdh4K 中做到了这一点。在我的“第 1 步”中:ibb.co/nsSLJSx。但是还是不行,是不是我弄错了?感谢您的安心。 @LouisRaverdy 看来您可能需要将您的@IBOutlet 连接到情节提要本身。 https://developer.apple.com/library/archive/referencelibrary/GettingStarted/DevelopiOSAppsSwift/ConnectTheUIToCode.html 是的,在我的 EndConfiguration 中已经有我的标签的@IBoulet 我需要添加另一个? @LouisRaverdy 我看到ModeleOutlet@IBOutlet 已创建。您能否验证它是否已连接到情节提要? 检查后效果很好:ibb.co/7YNpFNt和ibb.co/5kSLM61

以上是关于为啥我的 iOS 应用程序中的变量或强制转换为空? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 iOS 应用程序强制设置设置包

如果从数组中复制最终变量,为啥 Java 需要对最终变量进行显式强制转换?

在 Objective-C 中,为啥在分配给指定类型的变量时需要强制转换?

为啥 GraphQl 强制您匹配查询中的变量要求?

为啥 Pandas 将我的 numpy float32 强制转换为 float64?

为啥我的 iOS 应用没有禁用暗模式?