ํ๋กํ ์ฝ๊ณผ String(describing: _)์ฌ์ฉํด์ ๋ฆฌํฐ๋ดํ ๊ฐ ๋์ด๋ด๊ธฐ
๊ทธ ๋์ identifier ๊ฐ์ ์ฐ๋ ๊ณณ์ด ์ ๋ง ๋ง์๋ค. ViewController์ TableViewCell, CollectionViewCell ๋ฑ์์ ๋ง์ด ์ฌ์ฉํ์๋ค. ๋งค ํด๋์ค์์ ํ๋์ฝ๋ฉ๋ ๋ฌธ์์ด ๊ฐ์ ๋ฃ๋ ๋์ ํ๋กํ ์ฝ์ ์ด์ฉํ๋ฉด ๋ถํธํจ๊ณผ ๋ฐ๋ณต์ ์ค์ผ ์ ์๋ค.
protocol Reusable: Anyobject {
static var reuseidentifier: String { get }
}
๋ค์๊ณผ ๊ฐ์ด extension์์ ํ๋กํ ์ฝ์ ์ฑํํ๊ฒ ๋๋ฉด, ์ด์ reuseidentifier๋ฅผ ํธํ๊ฒ ์ ๊ทผํด์ ์ฌ์ฉํ ์ ์๋ค.
extension UIViewController: ReusableViewProtocol {
// ์ฐ์ฐ ํ๋กํผํฐ์ ํํ๋ก ๋์ด.
// ์ฐ์ฐ ํ๋กํผํฐ get๋ง ์ฌ์ฉํ๋ค๋ฉด get ์๋ต ๊ฐ๋ฅ.
static var reuseidentifier: String {
return String(describing: self)
}
}
extension UITableViewCell: ReusableViewProtocol {
static var reuseidentifier: String {
return String(describing: self)
}
}
์์๊ฐ ๊ด๋ฆฌํ๊ธฐ
enum๊ณผ struct ์ด์ฉํ๊ธฐ
- struct : ์ธ์คํด์ค๋ฅผ ๋๊ตฐ๊ฐ ์์ฑํด์ ์ฌ์ฉํ ์ ์์ (๋ถํ์ํ ๋ฉ๋ชจ๋ฆฌ ์ฐจ์ง, Rule break, ์ฝ๋ ์ผ๊ด์ฑ ์ ํ ๊ฐ๋ฅ, ์ ๊ทผ ์ ์ด๋ฅผ ํตํด ์ด๊ธฐํ ๋ฐฉ์ง๋ ๊ฐ๋ฅ)
- enum : ์ด๊ธฐํ x, ํ์ ํ๋กํผํฐ๋ฅผ ์ด์ฉํด์ namespace์ ์ฑ๊ฒฉ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅ
enum StoryboardName: String {
case main = "Main"
case search = "Search"
case setting = "Setting"
}
โก๏ธ rawValue๋ ์ค๋ณต๋์ด์๋ ์๋จ, 100% ์ผ์ด์ค๊ฐ ๊ณ ์ ํ ์ํฉ์ด ์๋๋ผ๋ฉด case ์ฌ์ฉ x
struct StoryboardName {
// ์ ๊ทผ ์ ์ด๋ฅผ ํตํด ์ด๊ธฐํ ๋ฐฉ์ง
private init() {}
static let main = "Main"
static let search = "Search"
static let setting = "Setting"
}
enum StoryboardName {
static let main = "Main"
static let search = "Search"
static let setting = "Setting"
}
UserDefaultsHelper
- ํ์ ์ ์ฅ ํ๋กํผํฐ + ์ฑ๊ธํค ํจํด
- ์ด๊ฑฐํ์ผ๋ก Key ๊ด๋ฆฌ
- ์ฐ์ฐ ํ๋กํผํฐ ์ฌ์ฉ
class UserDefaultsHelper {
// shared or standard
static let standard = UserDefaultsHelper()
let userDefaults = UserDefaults.standard
// singleton pattern
// ์๊ธฐ ์์ ์ ์ธ์คํด์ค๋ฅผ ํ์
ํ๋กํผํฐ ํํ๋ก ๊ฐ์ง๊ณ ์์
private init() {} // ๋ถํ์ํ ์ธ์คํด์ค ์์ฑ ๋ฐฉ์ง
enum Key: String {
case nickname, age
}
var nickname: String {
get {
return userDefaults.string(forKey: Key.nickname.rawValue) ?? "๋์ฅ"
}
set { // ์ฐ์ฐ ํ๋กํผํฐ parameter
userDefaults.set(newValue, forKey: Key.nickname.rawValue)
}
}
var age: Int {
get {
// defaults๊ฐ 0์ด๋ผ nil์ด ์๋
return userDefaults.integer(forKey: Key.age.rawValue)
}
set {
userDefaults.set(newValue, forKey: Key.age.rawValue)
}
}
}
๋คํธ์ํฌ ํต์
- ์์ฒญ์ด ์์ด์ผ ์๋ต์ ํ๋ค.
- ์์ฒญ ์ ๊ตฌ์ฒด์ ์ธ ์์ฒญ ๋ฐฉ์์ด ํ์ํ๋ค.
- ์ธ์ฆํค๊ฐ ํ์ํ๋ค. (๋ฌ๋ผ๋๋๋ก ๋ค ์ฃผ์ง ์๋๋ค.)
๊ตฌ์ฑ ์์
- HTTP Methods
- Status Code
- JSON, XML
- API (๊ท์น)
- ์ธ์ฆํค
API ํ ์คํธ ํด
- Insomnia
- Postman
Library
- Alamofire
- SwiftyJSON
'๐ฑ SeSAC' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SeSAC] 220803 TIL (0) | 2022.08.10 |
---|---|
[SeSAC] 220802 TIL (0) | 2022.08.10 |
[SeSAC] 220729 TIL (0) | 2022.08.10 |
[SeSAC] 220728 TIL (2) | 2022.08.06 |
[SeSAC] 220727 TIL (0) | 2022.08.03 |