问题标签 [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.
swift - 快速实现泛型方法
我正在 Swift 中实现面向协议的方法,如下所示。这个概念看起来很有趣,但我希望你能明白。我的问题是如何为重复的打印任务实现通用功能。谢谢你的进步。
swift - 不支持用作符合协议的具体类型
我想为设置页面创建一个通用视图控制器。现在设置来自 JSON,但稍后可能会切换实现,这就是我想要协议的原因。例如,LanguageSetting
协议是空的,但通过使用它,我仍然可以为将来保留类型安全,而不必满足于特定的实现(例如 JSON 解码)。
上面是我创建的一个非常简单的实现Playgrounds
。问题是最后一行:
抛出错误:
不支持使用 'LanguageSetting' 作为符合协议 'Setting' 的具体类型
关于如何解决这个问题的任何想法?
附带说明:
为什么这里需要向下转换?泛型类型约束不足以确保这一点吗?
swift - 不能对不可变值使用变异成员:'self' 是不可变的
我不明白为什么我会收到这个错误。SomeController
是一个类,而不是一个结构,它不是不可变的。有解决办法吗?
swift - Swift:面向协议的方法期间出错。错误:无法将“I.Job”类型的返回表达式转换为“ActualJob”类型
我有两个接口Controllerable
,Interactorable
它们应该协同工作以实现某些目标。以下是协议:
以下是符合上述协议的具体类型: 这里要注意的一件事是,Controller
具有Interactor
使事情正常工作的依赖关系。
现在,假设有一个驱动程序实体驱动集成。
如果你把所有这些都放在操场上,你会在控制台中看到以下内容:
游乐场:30:27:错误:无法将“I.Job”类型的返回表达式转换为“ActualJob”类型
返回交互器.interact()
~~~~~~~~~~~^~~~~~~~~~
作为!实际工作
那么,问题是,如果Interactable.Job
和Controllerable.Job
符合相同的类型,为什么会出现上述错误?
编辑 如果我将争用线更改为
错误消失了,但为什么需要这样做呢?它不会违背协议的目的吗?
swift - swift中的类到协议对话
我有 UIViewController 的这个沉重的 basicVC 类子类,我正在尝试将其转换为 vcprotocol。
它是basicVC,它像上帝一样做所有工作。我想作为 vcProtocol 闯入其中。
我正在尝试做的是关注点分离。并非所有 ViewController 都需要显示警报视图或网络未连接消息。
例如,我有在协议扩展中创建的 indicatorView 作为计算属性。没有错误警告,但没有显示任何指示符。当我尝试调试时,po acticvityIndicator
我得到以下错误,这表明 activityIndicator 从未分配过。
代码片段:
协议扩展:
我无法解决如何解决这个问题。因为我只能在协议中具有计算属性。所以我将它们作为仅获取属性。我的计划是使用协议扩展来提供默认实现。
关于如何解决这个问题的任何想法。
swift4 - 没有为 UIimagePickerController 调用委托方法
我正在尝试创建协议,我可以根据用户的选择使用相机或媒体库打开 UIimagePickerController。
这是一些代码:
当我运行代码时。未调用函数“didFinishPickingMediaWithInfo”。
我发现这个答案很有用。但如果有什么可以解决这个问题的。请在这里分享。
随意评论代码。
swift - 如何漂亮地打印符合 CustomDebugStringConvertible 的嵌套复合对象结构
我正在尝试漂亮地打印(带有子对象的缩进)一个复合对象结构,其中父对象和每个子对象都确认 CustomDebugStringConvertible 协议。
到目前为止我的代码是:import Foundation
上述代码片段的输出是:
但是,我想这样打印:
实现这一点的最佳方法是什么,保留代码的通用结构?
swift - 如何实例化两个相互依赖的泛型类?
我有两个需要彼此实例化的通用类,有没有一种优雅的方法呢?查看以下示例:
如您所见,SomeViewController
期待Presenter
和Presenter
期待SomeViewController
。所以不可能创建其中之一,因为我们将有无限循环
有没有优雅的解决方法?
ios - Swift 协议属性的不同默认实现
我知道你可以给一个像这样的协议扩展的默认值
但是有没有办法为这样的协议的不同实现设置不同的默认值,而无需为符合该协议的每个类或结构实现属性?
或一些类似的模式来做这样的事情?