ハードコーディングなしで識別子を管理
こんにちは!
今日お話しするのは、ハードコーディングではなく識別子をどのように管理するかです.
今回tableviewを使って
>まず、UI要素に接続されているビューコントローラの名前がUI要素の識別子と同じであることを確認する必要があります.
拡張による管理
まずは
次のタイプの
プロトコル管理.
以下に示すように、
プロトコルの基本的な実装は拡張でなければならないので、拡張で実装します.
ビューのプロパティとして管理すべきか,それとも個別のnamespaceを作成すべきか,多くの問題を考慮した.
以上の2つの方法で得られた結論が最もよい.
今日お話しするのは、ハードコーディングではなく識別子をどのように管理するかです.
今回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つの方法で得られた結論が最もよい.
Reference
この問題について(ハードコーディングなしで識別子を管理), 我々は、より多くの情報をここで見つけました https://velog.io/@qudgh849/identifier-하드코딩-하지-않고-관리하는-법テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol