如何在Swift中创建一组类

时间:2016-05-10 18:04:26

标签: swift swift2

我试图创建一个类来定义可扩展表视图所需的属性。所以我需要有一个类,我可以声明一个引用同一个类的属性(可扩展的父行子)。

以下是我的代码:

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>()


}

但我得到一个错误:

enter image description here

  

关于如何解决这个问题的任何线索?

1 个答案:

答案 0 :(得分:2)

这里有两个问题。

  1. 您需要为icontitle变量设置默认值,或创建初始化程序以在创建实例时设置它们,或将其更改为选项。

  2. 您的课程必须符合HashableEquatable才能用作Set中的类型。

  3. 更新的代码:

    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 ==()。例如,您可能需要考虑孩子。