【发布时间】:2023-01-05 15:20:08
【问题描述】:
我在 C# 和 Java 等语言方面有更多经验,所以也许我问错了问题,但我试图在 Swift 包上定义一个接口,因此任何实现该接口(或协议)的包都可以替换它。 例如,在数据访问包上,我想用 CRUD 方法定义一个接口,这样如果我用另一种类型更改数据库,其余代码不会受到影响。 如果可能的话?如果答案是“是”,那么实现这一目标的最佳方法是什么?
【问题讨论】:
-
协议是最接近接口的 Swift 等价物。它们允许您定义事物的属性和方法(甚至一些默认方法实现)而不是事物本身)。
-
我将补充说,协议的默认设置是在协议扩展中完成的。
-
太棒了@Paulw11!关于文件夹/组结构有一个标准吗?例如,我记得在 C# 中,他们通过我来创建,例如:MyPackage |____MyPackage.Interface | |____AnInterface.cs |____AnInterfaceImplementation.cs
-
swift 中的所有文件都具有 .swift 扩展名。 Swift Package Manager 有一个包结构,但这与协议的使用无关
-
@Paulw11 糟糕,我忘记了 cmets 上的格式。在前面的评论中要向您展示的是,在 C# 上我得到了 something like this,其中我有一个包含实现的包(即 BusinessLogic)和另一个包含这些实现必须使用的接口的包(即 BusinessLogic.Interface)
标签: ios swift interface package protocols