我试图为我拥有的协议类型创建一个闭包,但我得到了以下错误

静态成员"menuItemSorter"不能用于协议元类型"MenuItem".协议'

这是我的代码的简化版本,我正试图在操场上运行.

protocol MenuItem {
    var order: Int {get}
}

extension MenuItem {
    static var menuItemSorter: (MenuItem, MenuItem) -> Bool {
        return { $0.order < $1.order }
    }
}

class BigItem : MenuItem {
    var order: Int = 1
}

let bigItems = [BigItem(), BigItem()]

let sorter = MenuItem.menuItemSorter

MenVar/Uitem可以用什么方法对MenVar/Uitem进行静态排序?

推荐答案

协议没有可从代码的其余部分访问的接口.

您需要从以下类型调用它:

class BigItem: MenuItem {
    var order: Int = 1
}

let sorter = BigItem.menuItemSorter

Swift相关问答推荐

是否可以将字典项绑定到文本字段?

AirPods手势不发送AVAudioApp静音状态通知

Form中的Divider在macOS上并不完全扩展

为什么在Swift属性Wrapper中需要类型注释?

如何避免使用DispatchSemaphores时线程爆炸?

Swift 5.10:无法从非隔离的deinit访问属性*,这是Swift 6中的错误''''

如何在Swift中获得与Python相同的HMAC—SHA512签名?

如何分解阿拉伯字母?

从任务中打印

有没有办法让文本字段以不同的 colored颜色 显示而不影响半透明背景?

如何在 swiftui 中设置给定字符串类型日期的日期倒计时?

关于变量的视图的 SwiftUI 生命周期

RxSwift 提高性能

Swift 有没有办法在不使用 switch 语句的情况下获取关联值?

SwiftUI Preview 不适用于 Core Data

如何更改任务栏 colored颜色 和 sf 符号 colored颜色 ?

为什么更改属性后动画会加速? SwiftUI

在 Swift 中,如何查看 Process() 传递给 shell 的字符串?

iOS:检测设备是否为 iPhone X 系列(无框)

swift中静态函数和单例类的区别