identifier 하드코딩 하지 않고 관리하는 법

hoBahk·2021년 12월 21일
0

안녕하세요.

오늘은 identifier를 하드코딩 하지 않고 관리하는 법에 대해서 말씀드리겠습니다.

이번에 테이블뷰를 사용하다가 dequeueReusableCell메서드를 사용할 때 withIdentifier에 String으로 하드코딩 하는 것이 보기 불편하여 여러가지를 고민했지만 모두 불편한 부분이 있어 찾아보던 중 두가지 방법이 있어 소개드리려고 합니다!!

>먼저 선행되어야할 것은 UI요소에 연결된 뷰컨트롤러의 이름과 UI요소의 identifier을 같게 해야한다는 것입니다!

Extension으로 관리

먼저 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()
}



Protocol로 관리

Protocol로 관리하는 방법도 있습니다.

아래와 같이 Protocol을 만들어 그 안에 reuseIdentifier를 만들어 줍니다.
Protocol의 기본구현은 extension으로 해야 하므로 extension에 구현하겠습니다.

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를 만들어야 할까 여러 고민을 했지만, 위의 두 방법이 제일 괜찮다는 결론을 내렸습니다.
profile
호박에 줄 그어서 수박 되는 성장 드라마

0개의 댓글