ハードコーディングなしで識別子を管理


こんにちは!
今日お話しするのは、ハードコーディングではなく識別子をどのように管理するかです.
今回tableviewを使ってdequeueReusableCellの方法を使う場合、withIdentifierはStringを使ってハードコーディングをするのは不便なのでいろいろ考えましたが、不便な点があるので、探している間に2つの方法で紹介します!
>まず、UI要素に接続されているビューコントローラの名前がUI要素の識別子と同じであることを確認する必要があります.
拡張による管理
まずはextensionで管理する方法をご紹介します.
次のタイプのextensionを使用して、reuseIdentifierをstatic varとして宣言して管理できます.
extension UITableViewCell {
    static var reuseIdentifier: String {
        return String(describing: self)
    }
}
下図のように使えばいいです.
guard let cell = tableView.dequeueReusableCell(withIdentifier: EntryTableViewCell.reuseIdentifier, for: indexPath) as? EntryTableViewCell else {
    return UITableViewCell()
}
プロトコルによる管理
プロトコル管理.
以下に示すように、reuseIdentifierを含むプロトコルを作成します.
プロトコルの基本的な実装は拡張でなければならないので、拡張で実装します.
protocol ReuseIdentifying {
    static var reuseIdentifier: String { get }
}

extension ReuseIdentifying {
    static var reuseIdentifier: String {
        return String(describing: Self.self)
    }
}
その後、extensionを使用して管理するように使用できます.
guard let cell = tableView.dequeueReusableCell(withIdentifier: EntryTableViewCell.reuseIdentifier, for: indexPath) as? EntryTableViewCell else {
    return UITableViewCell()
}
この間、identifierのため、文字列をどのように管理するかを考えていました.
ビューのプロパティとして管理すべきか,それとも個別のnamespaceを作成すべきか,多くの問題を考慮した.
以上の2つの方法で得られた結論が最もよい.