2016-05-10 4 views
0

私は、拡張可能なテーブルビューに必要なプロパティを定義するクラスを作成しようとしています。だから私は同じクラス(拡張可能な親の行の子)を参照するプロパティを宣言できるクラスを持つ必要があります。Swiftでクラスのセットを作成する方法

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

Any clue on how to solve this?

答えて

2

あなたがここに二つの問題を持っている。ここ

私が持っているコードです。

  1. あなたのicontitle変数のデフォルト値を設定、またはインスタンスが作成されるときに設定することも、optionalsにそれらを変更するための初期化子を作成する必要があります。

  2. Setのタイプとして使用するには、クラスがHashableおよびEquatableに準拠している必要があります。

更新コード:

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 
} 

注:このコードは、彼らが同じタイトルを持っている場合、2個のセルが等しいことを前提としています。アプリケーション/使用状況に基づいて変更することができます。その場合は、hashValueを変更して、セルが同じであるとみなされるものに基づいて一意のIntを返します。同様の方法でfunc ==()を更新してください。たとえば、子供たちを考慮する必要があるかもしれません。

関連する問題