我试图创建一个类来定义可扩展表视图所需的属性。所以我需要有一个类,我可以声明一个引用同一个类的属性(可扩展的父行子)。
以下是我的代码:
public class ExpandableCell
{
var icon : String
/// The title for the cell.
var title: String
/// The childs of the cell
var childs: Set<ExpandableCell> = Set<ExpandableCell>()
}
但我得到一个错误:
关于如何解决这个问题的任何线索?
答案 0 :(得分:2)
这里有两个问题。
您需要为icon
和title
变量设置默认值,或创建初始化程序以在创建实例时设置它们,或将其更改为选项。
您的课程必须符合Hashable
和Equatable
才能用作Set
中的类型。
更新的代码:
class ExpandableCell: Hashable, Equatable
{
var icon : String = ""
/// The title for the cell.
var title: String = ""
/// The childs of the cell
var childs: Set<ExpandableCell> = Set<ExpandableCell>()
// MARK: - Hashable
var hashValue: Int {
return title.hashValue
}
}
// MARK: - Equatable
func ==(lhs: ExpandableCell, rhs: ExpandableCell) -> Bool {
return lhs.title == rhs.title
}
注意:此代码假定两个单元格相同,如果它们具有相同的标题。您可能希望根据您的应用程序/用途进行更改。如果是这样,请根据您的单元格被视为相同的内容更改hashValue
以返回唯一的Int
。并以类似的方式更新func ==()
。例如,您可能需要考虑孩子。