问题标签 [protocol-extension]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
942 浏览

ios - Swift枚举涉及依赖协议的多个泛型类型

我不明白为什么上面给了我一个错误。奇怪的是,删除两个枚举通用约束中的任何一个,使枚举具有单个约束,解决了问题......

请注意,ProtocolB 扩展了 ProtocolA。与通用约束一起使用时不支持吗?


更新

改成MyEnum这个可以解决问题:

但是,我还是不太明白为什么……

0 投票
1 回答
95 浏览

swift - 将协议一致性添加到现有类然后检查是否实现?

我正在尝试将几个现有的类分组到一个自定义协议中,这样我就可以对它们一视同仁了。例如,我想将这两个类组合在一个协议下,如下所示:

为什么当我这样做时,我不能这样做:

它不编译,它给出了这个错误:Variable binding in a condition requires an initializer

我正确地接近这个吗?任何建议或帮助将不胜感激!

0 投票
3 回答
2229 浏览

ios - 扩展 UIApplicationDelegate 协议

我想扩展UIApplicationDelegate协议并为方法提供默认实现application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool。但是,我提供的默认实现不会被调用。

是否有可能扩展UIApplicationDelegate协议(相对于UIApplication作为单例,或协议方法是可选的),或者我做错了什么?

谢谢

AppDelegate.swift:

0 投票
0 回答
1174 浏览

objective-c - 如何在 Objective-C 中使用带有扩展的 Swift 协议?

我正在尝试在 Objective-C 类中使用 Swift,但语法有问题,或者即使有可能。下面是我正在尝试的。

迅速:

目标-C:

如何让 Objective-C ViewController 工作?我有一个例子说明它应该如何在 Swift 中工作。谢谢你的帮助。

0 投票
0 回答
46 浏览

swift - Swift:使用通用元素扩展序列

在 Swift 中,可以扩展包含特定类型元素的序列,例如:

这很好。Rect<Float>但是,如果 Rect 本身是泛型类型(例如 等) ,我怎么能做同样的事情Rect<Double>?我试过了

但编译器抱怨“未声明的类型 T”。我不知道该把它放在哪里。现在,我必须专攻每一种浮点类型。

0 投票
1 回答
1031 浏览

swift - Self 是 UIViewController 的协议扩展中的变异函数

我编写了一个协议和相应的扩展,它利用一个简单StringStack的形式与表单的命名约定"<origin>@<destination>"在我的 Swift 应用程序中的嵌套视图之间执行 segues。我是 swift 新手,所以如果有更好的方法来实现跨多个视图的本质上的前进和后退按钮,我愿意接受。但是,由于我在下面详述的原因,以下代码存在问题。

我最初的问题是协议扩展中不允许变异函数,如本错误报告中所述。该报告中给出了一个建议的解决方法,但是以下导致错误声称'SegueForwardAndBackward' is not a subtype of 'UIViewController'.

我确实遇到了一个潜在的解决方案,我可以在另一个问题SegueForwardAndBackward中详细说明类协议。但是,实现类协议会导致段错误,我认为这是因为我将扩展声明为,不幸的是我不知道如何解决这个问题。where Self: UIViewController

目前,我对 Swift 中似乎又一个错误感到非常沮丧,所以任何帮助我修改我的方法或破译这些错误将不胜感激。

提前感谢您的回复!

0 投票
4 回答
3157 浏览

ios - 从协议扩展调用选择器

UISwipeGestureRecognizer我正在构建简单的主题引擎,并希望有一个扩展UIViewController

这是我的代码:

当然编译器找不到#selector(Self.switchCurrentTheme),因为它不是通过@objc指令公开的。是否可以将此行为添加到我的扩展程序中?

更新: Theme是一个 Swift 枚举,所以我不能在协议@objc前面添加Themeable

0 投票
1 回答
3087 浏览

swift - 如何在协议扩展中设置委托

我有多个显示相同类型单元格的视图控制器。我想在这样的协议扩展中设置委托:

当在其中didSelectItemAtIndexPath实现时ProductsViewController会被调用。有什么我错过的还是这是一种错误的方法?

0 投票
1 回答
855 浏览

swift - 多个协议扩展中的模棱两可的功能?

我有多个具有相同功能名称的协议。有些协议有关联的类型,我不知道如何像在非泛型协议中那样调用函数。我得到错误:Protocol 'MyProtocol1' can only be used as a generic contraint because it has Self or associated type requirements

这是我正在尝试做的事情:

如何从通用协议扩展中专门调用该函数?

0 投票
2 回答
16298 浏览

swift - 扩展现有协议以使用默认实现实现另一个协议

是否可以通过扩展将协议合规性添加到不同的协议?

例如,我们希望 A 遵守 B:

我想为 A 类型的对象提供 B 的默认实现(合规性)

动机是在不需要创建我自己的“桥梁”的情况下重用 A 的对象

作为旁注,我们可以扩展一个类来实现协议

和协议可以给出默认实现