๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸŽ iOS

[RealmSwift] ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์— enum์œผ๋กœ ํƒ€์ž… ์ง€์ •ํ•˜๊ธฐ

by ํ‹ด๋”” 2022. 10. 2.
728x90
๋ฐ˜์‘ํ˜•

์ถœ์ฒ˜ : Realm  ํ™ˆํŽ˜์ด์ง€

  • ํ•„๋“œ ๊ฐ’์˜ ์ง€์ •๋œ ํƒ€์ž…์ด ์žˆ๊ฑฐ๋‚˜ ๋“ฑ๊ธ‰์ด ์žˆ๋Š” ๊ฒฝ์šฐ ๋“ฑ์— enum์˜ ์žฅ์ ์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Œ
  • enum์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ์ •ํ•ด์ง„ ์ž…๋ ฅ๊ฐ’ ๋‚ด์—์„œ ์ž…๋ ฅํ•˜๊ฒŒ ๋˜๋ฏ€๋กœ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์˜ค๋ฅ˜๊ฐ€ ์ƒ๊ธฐ์ง€ ์•Š์Œ
  • ๊ฐ’์„ ์ž…๋ ฅํ•  ๋•Œ String์ด๋‚˜ Int๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ •ํ•ด์ง„ ํƒ€์ž…์„ ์ž…๋ ฅํ•˜๋ฏ€๋กœ ์ข€๋” ์ง๊ด€์ ์ž„
enum CustomerType: Int {
    /// ํ™œ๋™ ๊ณ„์ •, default
    case active
    /// ํœด๋ฉด ๊ณ„์ •
    case dormant
    /// ์ •์ง€ ๊ณ„์ •
    case suspension
}
  • CustomerType enum์„ ์ •์˜ํ•ด ์คŒ
  • (enum์—์„œ ๊ฐ case์˜ ๊ฐ’์„ ์ง€์ •ํ•ด ์ฃผ์ง€ ์•Š๋Š”๋‹ค๋ฉด ์ •์˜ํ•ด์ค€ ์ˆœ์„œ๋Œ€๋กœ 0, 1, 2.. ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๊ฐ€์žฅ ์ฒ˜์Œ ์ •์˜๋œ case์— 71์„ ์ง€์ •ํ•ด ์ฃผ์—ˆ๋‹ค๋ฉด 71, 72, 73... ์ˆœ์œผ๋กœ ๊ฐ’์„ ๊ฐ€์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. )
class Customer: Object {
    
    @objc dynamic var idx = 0
    @objc private dynamic var privateType: Int = CustomerType.active.rawValue
}
  • private๋กœ ์‚ฌ์šฉ์ž์˜ ์ง์ ‘์ ์ธ ์ž…๋ ฅ์„ ๋ง‰์Œ. 
  • Realm์˜ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์— ์‚ฌ์šฉ์ž ์ง€์ • ํ•จ์ˆ˜๋‚˜ ํ”„๋กœํผํ‹ฐ๋ฅผ ์ •์˜ํ•˜์—ฌ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ์‚ฌ์šฉ์ž์˜ ๊ฐ’์„ ์ž…๋ ฅ ๋ฐ›์•„ private ํ”„๋กœํผํ‹ฐ์— ๋ฐ˜์˜ํ•˜๋Š” ํ”„๋กœํผํ‹ฐ๋ฅผ ์ƒ์„ฑํ•จ
    var type: CustomerType {
        get {
            return CustomerType(rawValue: privateType)!
        }
        set {
            privateType = newValue.rawValue
        }
    }
  • getter์™€ setter๋ฅผ ํ†ตํ•ด ์ง€์ •๋œ enum ํƒ€์ž…์œผ๋กœ ๋ฐ˜ํ™˜, ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ rawValue๋กœ ๋ฐ”๊พธ์–ด ๊ทธ ์ธํŠธ๊ฐ’์„ private ํ”„๋กœํผํ‹ฐ์— ์ €์žฅํ•จ

์ถœ์ฒ˜ ๋ฐ ์ฐธ๊ณ  ์‚ฌ์ดํŠธ

https://ali-akhtar.medium.com/crud-operation-using-realmswift-part-1-17a99de83cc1

 

>>> ํ‹€๋ฆฌ๊ฑฐ๋‚˜ ์ด์ƒํ•œ ์ ์ด ์žˆ๋‹ค๋ฉด ์–ธ์ œ๋“  ๋Œ“๊ธ€ ๋ถ€ํƒ๋“œ๋ ค์š”๐Ÿ™Œ๐Ÿป

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€