在使用 CoreData 时,我们需要访问可通过 AppDelegate 访问的共享存储。要获取对 AppDelegate 的引用,我们可以通过执行以下操作来获取它:
guard let appDelegate = UIApplication.shared.delegate as? AppDelegate
else {
return
}
为什么向下转型到 Appdelegate 时我们必须如此安全?沮丧是否会因为某种原因而失败?如果是,为什么?
我环顾四周,找不到我们为什么要写这段代码的原因,想知道我为什么要写这些东西会有帮助!
最佳答案
AppDelegate
的可选向下转换(实际上是代表应用程序委托(delegate)类的类)永远不会失败,因为如果缺少应用程序委托(delegate)类,应用程序甚至不会启动。
您可以 100% 安全地编写
let appDelegate = UIApplication.shared.delegate as! AppDelegate
许多人都患有感叹号恐惧症 😉 并争辩说所有感叹号都是邪恶的,您总是必须保护
任何可选的。这是错误的。世界不仅是黑白的。在许多情况下,强制解包可选是安全的,就像在这种特殊情况下一样。
关于ios - AppDelegate 的 'downcasting' 会失败吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44153454/