Tag: 埃米利亚诺·佩雷斯

如何避免情节提要中的Segue标识符

Segue标识符是纯字符串 。 故事板中的属性和代码中的文字。 我们需要确保情节提要中的代码与代码匹配。 如果我们需要以编程方式调用segue,则它们很有用,因为它们可以识别segue。 但是通常, 标识符用于将信息从一个视图控制器传递到另一个视图控制器。 像在此示例中一样,标识符用于从源视图控制器A配置B或C: 运行时错误 。 标识符是字符串。 我们可能会拼写错误或重构代码并更改字符串,而不会更新对应的字符串。 这会导致运行时错误。 如果标识符错误,则将继续执行segue,并且目的地将无法正确准备。 准备目的地的代码永远不会执行。 编译器无法检查标识符是否匹配,因此对错误一无所知。 开发人员也不了解它们。 将显示新的视图控制器,并且该应用将崩溃或行为不正确。 最糟糕的部分是,如果我们犯同样的错误,即仅在一侧更改标识符,则会在修复它们后再次出现这些错误。 我们可以通过定义标识符的命名约定( 请参见 stackoverflow问题 )和/或使用常量或枚举而不是文字来尝试最小化此问题 。 注意:Natasha The Robot在文章“ Swift中面向协议的Segue标识符 ”中解释了使用协议和枚举的字符串文字的另一种方法 。 他们摆脱了文字字符串,提高了代码质量。 序列标识符仍被使用。 刚性和脆弱性 。 Segue标识符很难维护。 它们的变化会影响不同的部分,它们是刚性的 。 如果您改变一侧,则会破坏另一侧,它们很脆弱 。 注意:刚度和脆弱性是不良设计的标志,摘自 罗伯特·C·马丁(Robert C. Martin)的 “ 依赖反转原理 ”。 重复的代码。 当我们重写方法prepare(for segue:UIStoryboardSegue, sender: Any?) ,我们将在条件prepare(for segue:UIStoryboardSegue, sender: Any?)和目标cast中复制代码。 […]