빙수왕의 개발일지

withIdentifier 하드코딩 말고 다른방법 본문

개발/iOS

withIdentifier 하드코딩 말고 다른방법

빙수킹 2020. 10. 11. 18:11

argument label이 withIdentifier인 메소드들..

예를들어 테이블뷰의 dequeueReusableCell이라던가 UIStoryboard의 instantiateViewController에서 하드코딩을 사용하게 된다.

withIdentifier: "cell"

withIdentifier: "DetailViewController"

이런식으루.. 근데 이럼 오타가 날수도 있고 유지보수에도 안좋아서 하드코딩은 피하는게 좋으니 다른 방법을 쓸 수 있다.

NSObject에 extension으로 identifier의 이름을 가져오는 프로퍼티를 만들어주면 다양한 객체에서 이 프로퍼티를 부르는 것 만으로 identifier의 이름을 하드코딩하지 않고 가져올 수 있다.

 

아래와 같이 NSObjectExtension.swift파일에 reuseIdentifier 프로퍼티를 정의하고

import Foundation

extension NSObject {
    class var reuseIdentifier: String {
        return String(describing: self)
    }
}

 

아래처럼 불러서 사용할 수 있다.

tableView.dequeueReusableCell(withIdentifier: MyTableViewCell.reuseIdentifier, for: indexPath)

storyboard?.instantiateViewController(withIdentifier: DetailViewController.reuseIdentifier)