swift-protocols相关内容
我在绕圈,试图让Hashable使用符合相同protocol的多个struct。 我有一个协议SomeLocation声明如下: protocol SomeLocation { var name:String { get } var coordinates:Coordinate { get } } 然后我创建多个包含类似数据的对象: struct ShopLo
..
可以在协议中声明嵌套类型,如下所示: protocol Nested { class NameOfClass { var property: String { get set } } } Xcode显示“此处不允许输入”: 类型“NameOfClass”不能嵌套在协议“Nest”中 我想创建一个需要具有嵌套类型的协议。这是不可能的吗?还是我可
..
当要解码的类型在运行时仅已知时,是否可以使用SWIFT 4中的Decodable协议对JSON对象进行解码? 我有一个各种各样的注册表,它将String标识符映射到我们要解码的类型,如下所示: import Foundation struct Person: Decodable { let forename: String let surname: String }
..
我尝试过对单例使用单行单例初始化(就像在类中一样),以下是一些错误屏幕截图: 您能否帮助我理解这些错误,以及是否可以使用单例协议? 提前感谢 推荐答案 协议本身不能是单例。这没有任何意义。协议是其他类型符合的内容。 但是如果您想声明符合Singleton的东西遵循某种规则,比如提供一个sharedInstance,那么就可以了。您的语法就是不正确。您需要将var与get一起
..
给定一个没有任何关联类型的协议: protocol SomeProtocol{var someProperty: Int { 获取 }} 这两个函数在实践中有什么区别(意思不是“一个是通用的,另一个不是")?它们是否生成不同的代码,它们是否具有不同的运行时特性?当协议或功能变得不平凡时,这些差异是否会改变?(因为编译器可能会内联这样的东西) func generic(some: T) ->诠
..
我正在尝试创建一个字典(实际上是一个 HashSet)键入自定义协议斯威夫特,但它给了我标题中的错误: Protocol 'myProtocol' 只能用作通用约束,因为它具有 Self 或关联的类型要求 而且我无法判断它的正面或反面. protocol Observing: Hashable { }var 观察者 = HashSet() 解决方案 协议 Observing 继承
..
我有一个协议 RequestType,它有如下关联类型模型. 公共协议 RequestType: class {关联类型模型var 路径:字符串 { 设置 }}公共扩展请求类型 {public func executeRequest(completionHandler: Result -> Void) {request.response(rootKeyPath:
..
A 类提供字符串值.B类内部有两个A类成员,并提供了一个计算属性“v"来选择其中一个. class A {变量值:字符串初始化(值:字符串){self.value = 价值}}B类{var v1:A?var v2:A = A(值:“2")私有变量 v:A {返回 v1 ??v2}变量值:字符串{得到 {返回值}放 {v.value = newValue}}} 这段代码很简单,而且很有效.由于
..
最近,我一直在使用 Swift 开发多个面向协议的应用程序框架,并注意到协议扩展中静态函数的一些(看似)奇怪的行为,特别是从元类型调用扩展函数的地方. 我最初发现这些行为的方式是解决一个错误,其中对象的类型以一种看似不可能的方式改变.我追踪了这个问题并最终确定这是因为在一个静态函数中,Self 和 self 可能拥有不同的类型(注意:我已经开始调用这些“大 S 自我"和“小自我").我将使用
..
概述: 我有一个协议 P1,它提供了一个 Objective-C 可选函数的默认实现. 当我提供可选函数的默认实现时,会出现警告 编译器警告: 非'@objc'方法'presentationController(_:viewControllerForAdaptivePresentationStyle:)'不满足'@objc'协议'UIAdaptivePresentationCont
..
考虑这个代码: 扩展集合{func foo() ->整数{如果 self.first 是 Collection {return (self.first as! Collection).underestimatedCount//错误}别的 {返回 self.underestimatedCount}}} 我们得到了可怕的、显然令人困惑的: 协议“Collection"只能用作通用约束,因为它
..
我正在尝试创建一个字典(实际上是一个 HashSet)Swift,但它给了我标题中的错误: Protocol 'myProtocol' 只能用作泛型约束,因为它具有 Self 或关联类型要求 我无法理解它. protocol Observing: Hashable { }var 观察者 = HashSet() 解决方案 Protocol Observing 继承自协议 Hasha
..
给定一个没有任何关联类型的协议: protocol SomeProtocol{var someProperty: Int { get }} 这两个函数在实践中的区别是什么(意思不是“一个是通用的,另一个不是")?它们是否生成不同的代码,它们是否具有不同的运行时特征?当协议或功能变得重要时,这些差异会改变吗?(因为编译器可能会内联这样的东西) func generic(some: T) ->整
..
weak 引用似乎在 Swift 中不起作用,除非将 protocol 声明为 @objc,这是我不想要的一个纯 Swift 应用. 这段代码给出了一个编译错误(weak 不能应用于非类类型MyClassDelegate): class MyClass {弱变量委托:MyClassDelegate?}协议 MyClassDelegate {} 我需要在协议前面加上@objc,然后它就可以
..
我正在尝试创建一个字典(实际上是一个 HashSet)Swift,但它给了我标题中的错误: Protocol 'myProtocol' 只能用作泛型约束,因为它具有 Self 或关联类型要求 我无法理解它. protocol Observing: Hashable { }var 观察者 = HashSet() 解决方案 Protocol Observing 继承自协议 Hasha
..
在 Swift 中,我可以通过如下声明来显式设置变量的类型: var 对象:TYPE_NAME 如果我们想更进一步并声明一个符合多个协议的变量,我们可以使用protocol声明: var object: protocol//etc 如果我想声明一个符合一个或多个协议并且也是特定基类类型的对象怎么办?等效的 Objective-C 如下所示: NSSomething* 对象 = ...;
..
我有一个协议,Address,它继承自另一个协议,Validator,Address 实现了Validator> 扩展中的要求. 还有另一个协议,FromRepresentable,它有一个 associatedType (ValueWrapper) 要求,它应该是 Validator. 现在,如果我尝试使用 Address 作为 associatedType,那么它不会编译.它说,
..
为什么下面的代码会报错? protocol ProtocolA {var someProperty:ProtocolB { get }}协议协议B {}类 ConformsToB:ProtocolB {}class SomeClass: ProtocolA {//类型“SomeClass"不符合协议“ProtocolA"var someProperty:ConformsToBinit(someP
..
为什么这个 Swift 代码不能编译? protocol P { }结构 S: P { }让 arr:[P] = [ S() ]扩展数组其中元素:P {func test() ->[T] {返回 []}}让结果:[S] = arr.test() 编译器说:“类型 P 不符合协议 P"(或者,在 Swift 的后续版本中,“使用 'P' 作为符合协议的具体类型不支持协议“P"."). 为什
..
我有一个协议请求类型,它有如下的关联类型模型. 公共协议请求类型:class {关联类型模型var 路径:字符串 { 获取设置 }}公共扩展请求类型 {public func executeRequest(completionHandler: Result -> Void) {request.response(rootKeyPath: rootKeyPath) { [weak self] (re
..