Tag: 类型安全

输入安全网络层2.0

有很多关于使用Swift以安全类型进行网络层的文章。 无论使用哪种网络API,这些方法都依赖于返回正是我们期望的数据类型。 这个想法是利用Swift的类型推断/泛型能力来避免强制转换返回的类型。 在这篇文章中,我们将通过强耦合我们要获取的端点和它必须返回的数据类型来尝试进一步发展。 快速提醒 假设我们要获取“ dog.ceo ”端点之一。 通常从定义路线开始。 枚举对此非常有用: 让我们尝试滥用这种机制:在仍然使用相同端点的同时,我们尝试明确告诉编译器结果是“ Result ”。 如预期的那样,失败fails。 我们确实拥有一个编译时类型的安全网络层😏,并对我们的API进行了少量更改。 很酷。 感谢您的阅读,并随时提供反馈! 敬请关注。

使自定义UITableViewCells出队的更安全的选择

使用最新的API(在iOS 6中引入)使出站和自定义基本UITableViewCell ,您将执行以下操作: 这样做的主要原因是register与dequeueReusableCell方法之间的完全独立性: dequeueReusableCell不知道您之前是否注册了一个单元,并且无法推断其类型。 因此,它需要从UITableViewCell强制转换为自定义子类。 解决此问题的常用方法是: 还记得我们在iOS 6之前对单元出队的方式吗? 使用旧的dequeueReusableCell方法,并在该方法失败的情况下创建一个新的单元格。 我们没有在任何地方注册单元格类型。 使用此方法具有重要的优点: 使单元出队的所有必要代码都在同一位置:这正在改善您的本地推理。 您不需要使用任何解决方法:编译器不会引发任何错误,代码也不会崩溃,并且它不会无声地失败(当然,从技术上讲,它可以,但是前提是您分配了不同的单元格标识符。)继续阅读)。 由于所有代码都在一起,因此您可以将单元标识符设置为常数并重新使用它,从而避免了我们之前确定的可能的故障点之一。 由于现在开发人员是负责初始化单元的人(不再自动完成),因此编译器确保强制类型转换和新创建的单元属于同一类型。 这样可以避免我们谈论的另一个故障点:不可能有不同的类型(编译器会引发错误)。