gpt4 book ai didi

ios - 静态成员不能用于协议(protocol)元类型 Swift

转载 作者:IT王子 更新时间:2023-10-29 05:06:38 24 4
gpt4 key购买 nike

我正在尝试为我拥有的协议(protocol)类型创建闭包,但出现以下错误

Static member 'menuItemSorter' cannot be used on protocol metatype 'MenuItem.Protocol'

这是我尝试在 Playground 上运行的代码的简化版本。

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

我希望能够在 MenuItem 上有一个可以对 menuItem 进行排序的类/静态 var 方法,最好的方法是什么?

最佳答案

协议(protocol)没有可从其余代码访问的接口(interface)。

你需要从一个附着类型中调用它:

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

let sorter = BigItem.menuItemSorter

关于ios - 静态成员不能用于协议(protocol)元类型 Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42495138/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com