프로젝트 할 때마다 collectionView, tableView 식별자 만들고, 다시 갖다쓰는 과정이 번거로웠는데
해결할 수 있는 간단한 방법을 알아냈다!!!!!! 👏🏻👏🏻
방법 1. - 비추
먼저 가장 기본적인 방법부터 설명하자면 식별자를 문자열로 설정하는 방법이 있다
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "MyTableViewCell")
let cell = tableView.dequeueReusableCell(withIdentifier: "MyTableViewCell", for: indexPath)
cell.textLabel?.text = "Hello Swift"
tableView.register 등록 시 식별자를 문자열(ex. "MyTableViewCell") 등으로 임의 설정 후
cell 등록 시 동일한 식별자를 입력해 주는 거다
이러한 방법은 식별자를 수기 등록하여 오탈자 발생 시 에러가 발생할 수 있고 관리 및 유지보수가 어렵다는 단점이 있다
방법 2.
그래서 사용하던 방법이 식별자만 관리하는 파일을 만든 후 Identifier을 enum 열거형으로 그룹화하여 끌어다 쓰는 방식이다
해당 방법처럼 예시를 만들어 보자면 문자열 식별자 "MyTableViewCell"을 myTableViewCell에 담아준 후
identifiers.swift
enum Identifiers {
static let myTableViewCell = "MyTableViewCell"
}
사용할 곳에서 호출해서 넣어주면 된다
tableView.register(UITableViewCell.self, forCellReuseIdentifier: identifiers.MyTableViewCell)
let cell = tableView.dequeueReusableCell(withIdentifier: identifiers.MyTableViewCell, for: indexPath)
cell.textLabel?.text = "Hello Swift"
이번에 정리하면서 알아 보았는데, 이러한 방법을
정적 속성(static property) 접근 또는 타입 속성(type property) 접근 이라고 한다
- 정적(static): 열거형 또는 구조체의 인스턴스를 생성하지 않고도 해당 속성이나 메서드에 접근할 수 있도록 해줍니다.
- 상수(constant): let 키워드로 선언된 속성으로, 값이 한 번 설정되면 변경할 수 없습니다.
이러한 방법은 오탈자가 발생하지 않아 관리와 유지보수가 용이한 장점이 있다
그리고 가장 마지막으로 찾은 방법!!!
방법 3. - 강추
class이름을 String값으로 바꾸는 extension을 만들어 준 후 계~속 가져다 쓰는 방법이다
이 방법은 2번 방법처럼 새로운 식별자가 생길 때 마다 선언해줄 필요도 없다
extension NSObject {
// 인스턴스가 어떤 클래스의 객체인지 문자열로 반환
var className: String {
return String(describing: type(of: self))
}
// 클래스 자체의 타입 이름을 문자열로 반환
class var className: String {
return String(describing: self)
}
}
extension을 최초 1회만 만들어 준 후 Cell의 파일명에 .className을 붙여 클래스 이름을 문자열로 변환하여 식별자로 활용한다
tableView.register(UITableViewCell.self, forCellReuseIdentifier: MyTableViewCell.className)
let cell = tableView.dequeueReusableCell(withIdentifier: MyTableViewCell.className, for: indexPath)
cell.textLabel?.text = "Hello Swift"
이러한 방법은
1. 매번 식별자 이름을 고민하는 리소스를 줄일 수 있으며
2. 컬렉션뷰 또는 테이블뷰 생성 시마다 새로운 식별자를 등록할 필요도 없고
3. 클래스 이름 자체를 식별자로 활용할 수 있다는 장점이 있다
4. 당연히 오탈자나 잘못 들어갈 확률도 없어서 관리와 유지보수도 간편하다
진짜 최고 짱이다
'🍎 Swift > iOS 학습 노트' 카테고리의 다른 글
[스터디11일차][RxSwift] Subscribe & Bind & Driver (0) | 2025.01.22 |
---|---|
[Swift🍎] URLSession 뜯어보기 (0) | 2025.01.17 |
[Swift🍎] RxSwift로 UITableView에 bind 하기 (0) | 2024.10.31 |
[Swift🍎] RxGesture로 간편하게 View에 클릭이벤트 넣기 (0) | 2024.10.17 |
[Swift🍎] UIColor를 CGColor에 할당해야 하는 경우 (0) | 2024.10.16 |