返回选择器字典的 Swift 协议(protocol)

标签 swift swift-protocols

我正在尝试创建一个协议(protocol),其中一个方法将返回一个选择器字典。但是我遇到了一个问题......

协议(protocol)代码如下:

@objc public protocol MazeProtocol: AnyObject {
    @objc static func configurations() -> [String:Selector]
}

这是我得到的编译器错误: MazeTableViewController.swift:12:24: 方法无法标记为@objc,因为其结果类型无法在 Objective-C 中表示

如果我删除方法前面的@objc,我会得到类似的错误。

最佳答案

[String: Selector]Dictionary<String, Selector>这是一个结构并且结构不能在 Objective-C 中表示,所以你需要一个 NSDictionary

@objc public protocol MazeProtocol: AnyObject {
    @objc static func configurations() -> NSDictionary
}

关于返回选择器字典的 Swift 协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53448324/

相关文章:

swift - Swift 2.0 中的 supportedInterfaceOrientationsForWindow

ios - 使用可选的初始化程序扩展 CollectionType

swift - 为通用协议(protocol)实现提供具体类型

swift - 如何将 Swift 协议(protocol)与泛型方法和泛型类型一起使用

ios - [NSObject : AnyObject] ?' does not have a member named ' subscript' in Xcode 6 Beta 6

ios - 单选按钮不会通过选择而改变

swift - StatusBarIcon 具有类似 Dropbox 的行为

swift - |= 运算符不能应用于两个 NSWindowMask 操作

ios - UIView 中的协议(protocol)无法更改 viewController 中的对象?

swift - 在 Swift 中是否有 CustomStringConvertible 等效类型?