问题标签 [protocol-oriented]

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 投票
3 回答
954 浏览

swift - 快速实现泛型方法

我正在 Swift 中实现面向协议的方法,如下所示。这个概念看起来很有趣,但我希望你能明白。我的问题是如何为重复的打印任务实现通用功能。谢谢你的进步。

0 投票
1 回答
796 浏览

swift - 不支持用作符合协议的具体类型

我想为设置页面创建一个通用视图控制器。现在设置来自 JSON,但稍后可能会切换实现,这就是我想要协议的原因。例如,LanguageSetting协议是空的,但通过使用它,我仍然可以为将来保留类型安全,而不必满足于特定的实现(例如 JSON 解码)。

上面是我创建的一个非常简单的实现Playgrounds。问题是最后一行:

抛出错误:

不支持使用 'LanguageSetting' 作为符合协议 'Setting' 的具体类型

关于如何解决这个问题的任何想法?

附带说明:

为什么这里需要向下转换?泛型类型约束不足以确保这一点吗?

0 投票
3 回答
41 浏览

arrays - 不会为集合的元素推断协议一致性

我有一组协议能够在UITableView中显示元素:

单个元素符合TableRepresentableRow协议:

我希望在TableRepresentableSection中也可以推断出协议一致性,因为ServicesSummary.ServiceTableRepresentableRow但是,这不会发生:

为什么我会收到此错误?

更新: 协议组合也不起作用: 在此处输入图像描述

0 投票
1 回答
4568 浏览

swift - 不能对不可变值使用变异成员:'self' 是不可变的

我不明白为什么我会收到这个错误。SomeController是一个类,而不是一个结构,它不是不可变的。有解决办法吗?

0 投票
1 回答
173 浏览

swift - Swift:面向协议的方法期间出错。错误:无法将“I.Job”类型的返回表达式转换为“ActualJob”类型

我有两个接口ControllerableInteractorable它们应该协同工作以实现某些目标。以下是协议:

以下是符合上述协议的具体类型: 这里要注意的一件事是,Controller具有Interactor使事情正常工作的依赖关系。

现在,假设有一个驱动程序实体驱动集成。

如果你把所有这些都放在操场上,你会在控制台中看到以下内容:

游乐场:30:27:错误:无法将“I.Job”类型的返回表达式转换为“ActualJob”类型

返回交互器.interact()

~~~~~~~~~~~^~~~~~~~~~

作为!实际工作

那么,问题是,如果Interactable.JobControllerable.Job符合相同的类型,为什么会出现上述错误?

编辑 如果我将争用线更改为

错误消失了,但为什么需要这样做呢?它不会违背协议的目的吗?

0 投票
1 回答
92 浏览

swift - swift中的类到协议对话

我有 UIViewController 的这个沉重的 basicVC 类子类,我正在尝试将其转换为 vcprotocol。

它是basicVC,它像上帝一样做所有工作。我想作为 vcProtocol 闯入其中。

我正在尝试做的是关注点分离。并非所有 ViewController 都需要显示警报视图或网络未连接消息。

例如,我有在协议扩展中创建的 indicatorView 作为计算属性。没有错误警告,但没有显示任何指示符。当我尝试调试时,po acticvityIndicator我得到以下错误,这表明 activityIndi​​cator 从未分配过。

代码片段:

协议扩展:

我无法解决如何解决这个问题。因为我只能在协议中具有计算属性。所以我将它们作为仅获取属性。我的计划是使用协议扩展来提供默认实现。

关于如何解决这个问题的任何想法。

0 投票
2 回答
199 浏览

swift4 - 没有为 UIimagePickerController 调用委托方法

我正在尝试创建协议,我可以根据用户的选择使用相机或媒体库打开 UIimagePickerController。

这是一些代码:

当我运行代码时。未调用函数“didFinishPickingMediaWithInfo”。

我发现这个答案很有用。但如果有什么可以解决这个问题的。请在这里分享。

随意评论代码。

0 投票
1 回答
159 浏览

swift - 如何漂亮地打印符合 CustomDebugStringConvertible 的嵌套复合对象结构

我正在尝试漂亮地打印(带有子对象的缩进)一个复合对象结构,其中父对象和每个子对象都确认 CustomDebugStringConvertible 协议。

到目前为止我的代码是:import Foundation

上述代码片段的输出是:

但是,我想这样打印:

实现这一点的最佳方法是什么,保留代码的通用结构?

0 投票
0 回答
48 浏览

swift - 如何实例化两个相互依赖的泛型类?

我有两个需要彼此实例化的通用类,有没有一种优雅的方法呢?查看以下示例:

如您所见,SomeViewController期待PresenterPresenter期待SomeViewController。所以不可能创建其中之一,因为我们将有无限循环

有没有优雅的解决方法?

0 投票
1 回答
48 浏览

ios - Swift 协议属性的不同默认实现

我知道你可以给一个像这样的协议扩展的默认值

但是有没有办法为这样的协议的不同实现设置不同的默认值,而无需为符合该协议的每个类或结构实现属性?

或一些类似的模式来做这样的事情?