๊ณต๋ถ€ ์—ฐ์Šต์žฅ :-)

TIL_2019_07

|

2019.07.05

  • UIDatePicker์—์„œ 24์‹œ๊ฐ„ ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์„ ๋•Œ: Danish๋ชจ๋“œ !
  • ์—…๋ฌดํ• ๋•Œ๋Š” UITextField์˜ done ๋ฒ„ํŠผ ๋™์ž‘์„ extension์— ๊ตฌํ˜„๋œ ๋™์ž‘์„ ์‚ฌ์šฉํ•˜๋„๋ก ๋˜์–ด์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฆฌ๋ธŒ๋žœ๋”ฉ์— ๋“ค์–ด๊ฐ€๋ฉด์„œ ํ…์ŠคํŠธํ•„๋“œ์˜ done์ด๋‚˜ return ๋™์ž‘์— ์ถ”๊ฐ€์ ์ธ ์ฝœ๋ฐฑ์„ ๊ตฌํ˜„ํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ฒจ์„œ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•ด์•ผํ•˜๋‚˜ ๋ง‰๋ง‰ํ–ˆ๋Š”๋ฐ, ์˜์™ธ๋กœ ์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ–ˆ๋‹ค. xib์—์„œ sentEvent๋ฅผ didEndOnExit์— ์›ํ•˜๋Š” ๋™์ž‘์„ ๊ตฌํ˜„ํ•ด์ฃผ๋ฉด ๋œ๋‹ค!

2019.07.07

  • ์ฃผ๋ง์— ํ•œ ์—„์ฒญ๋‚œ ์‚ฝ์งˆโ€ฆIBOutletCollection์— ์—ฐ๊ฒฐํ• ๋• ํ•˜๋‚˜ํ•˜๋‚˜์”ฉ ํ•ด์•ผ์ง€ ํ•œ๊บผ๋ฒˆ์— ์„ ํƒํ•˜๊ณ  ๋“œ๋ž˜๊ทธํ•˜๋ฉด ๋“œ๋ž˜๊ทธ ์‹œ์ž‘์ ์ธ ๋ฒ„ํŠผ๋งŒ ์ฝœ๋ ‰์…˜์— ์—ฐ๊ฒฐ๋จโ€ฆ.ใ… 0ใ… ์ด๋Ÿด์ˆ˜๊ฐ€. ๋ณดํ†ต IBOutletCollection์€ ์ž˜ ์•ˆ์จ์„œ ๋ชฐ๋ž๋Š”๋ฐ, ๋ฉ€ํ‹ฐ ์„ ํƒํ•˜๊ณ  ํ•œ๊บผ๋ฒˆ์— ๋“œ๋ž˜๊ทธํ•˜๋ฉด ํ•œ ์•„์šธ๋ › ๋ณ€์ˆ˜์— ๋‹ค ์—ฐ๊ฒฐ๋˜๋Š”์ค„ ์•Œ์•˜๋‹ค. (ํ•˜์ง€๋งŒ ์•„๋‹ˆ์—ˆ๋‹ค.) ์•„๋ฌด๋ฆฌ ์ฝ”๋“œ๋ฅผ ๋œฏ์–ด๋ณด๊ณ  ๋””๋ฒ„๊น…์„ ํ•ด๋ด๋„ ๋กœ์ง์€ ๋งž๋Š”๋ฐ ๋ทฐ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์–ด์„œ ์ขŒ์ ˆ์Šค๋Ÿฌ์› ๋Š”๋ฐ, ๊ฐ€๋” ์ด๋ ‡๊ฒŒ ํ•ด๊ฒฐํ•˜๊ณ  ํž˜๋น ์ง€๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค ใ…Ž_ใ…Ž!

2019.07.10

  • forEach๋ฅผ ๋Œ๋‹ค๊ฐ€ ์กฐ๊ฑด์ด ๋งž์€ element๋ฅผ ์ฐพ์•„์„œ ์ž‘์—…์„ ํ•˜๊ณ  ๋ฐ”๋กœ break๋‚˜ return์œผ๋กœ ๋ฐ˜๋ณต๋ฌธ์„ ๋๋‚ด๊ณ ์‹ถ๋‹ค๋ฉด forEach๊ฐ€ ์•„๋‹Œ filter๋‚˜ firstํ•จ์ˆ˜๋ฅผ ์“ฐ์ž!
    • ๊ทผ๋ฐ element์ค‘์—์„œ ๋‹จ ํ•œ๊ฐœ๋งŒ ์ฐพ์•„์„œ ์ž‘์—…ํ•ด์•ผํ•˜๋Š ์ƒํ™ฉ์ด๋ผ๋ฉด first๊ฐ€ ๋” ์ ํ•ฉ. (์Šค์œ„ํ”„ํŠธ ๊ณ ์ฑ ํ•จ์Šˆโ€ฆ๋„˜ ์ข‹๋‹น..)
      if let category = self.selectedCategory {
          if let categoryButton = self.categoryButtons.first(where: { $0.titleLabel?.text == category }) {
              categoryButton.doSomething()
          }
      }
    

2019.07.20

  • ํด๋กœ์ € ๋ธ”๋Ÿญ ๋‚ด๋ถ€์„œ์˜ lldb์—์„œ self๋ฅผ ์ ‘๊ทผ ๋ชปํ•˜๋‚˜?
    • forEach ๋ฌธ ์•ˆ์— ๋ธŒ๋ ˆ์ดํฌ ํฌ์ธํŠธ๊ฐ€ ๊ฑธ๋ ค์žˆ์„๋•Œ ๊ฐ’์„ ๋ด์•ผํ•ด์„œ ์ฐ์–ด๋ดค๋Š”๋ฐ, ์š”๋ ‡๊ฒŒ ๋‚˜์™”๋‹ค. ์ฐพ์•„๋ด์•ผ์ง• ``` (lldb) po objUser?.strRegion error: :3:1: error: use of unresolved identifier 'objUser'; did you mean 'objc_super'? objUser?.strRegion ^~~~~~~ objc_super

(lldb) po objUser error: :3:1: error: use of unresolved identifier 'objUser'; did you mean 'objc_super'? objUser ^~~~~~~ objc_super

(lldb) po self.objUser?.strRegion error: :3:1: error: use of unresolved identifier 'self' self.objUser?.strRegion ^~~~


### 2019.07.21
- ๋‚˜์˜ ๋งˆํŠธ ์•ฑ์˜ ์ˆ™์›... ์œ„์น˜๊ฒ€์ƒ‰...๊ด€๋ จ ์ž‘์—…ํ•˜๊ธฐ!
  - ์œ ์ €์œ„์น˜ ๊ฐ์ฒด์— isValid ๊ตฌํ˜„ํ•˜๊ธฐ
  - ์œ ์ €์œ„์น˜ ๊ธฐ๋ฐ˜์œผ๋กœ ์ฃผ๋ณ€ ๋งˆํŠธ ํƒ์ƒ‰ํ•˜๋Š” fetch() ํ•จ์ˆ˜ ์ ๊ฒ€
  - ์œ ์ € ์ขŒํ‘œ๊ฐ€ ์žกํžˆ๋ฉด ๋ฐ”๋กœ ํ”„๋กœํผํ‹ฐ ์„ธํ„ฐ์—์„œ fetch()๋ฅผ ์ฝœํ•˜๊ฒŒ ๋˜์–ด์žˆ๋Š”๋ฐ, ์œ ์ €์˜ ์œ„์น˜๊ฐ€ 0,0์ด๋‚˜ ๋ง๋„ ์•ˆ๋˜๋Š” ๋‚œ์ˆ˜๊ฐ€ ์žกํ˜€์„œ ๋„ค์ด๋ฒ„ ์—”ํด๋ผ์šฐ๋“œ์— ๋ฌธ์˜๋ฅผ ๋‚จ๊ธฐ๊ธฐ๋„ ํ•˜๊ณ  ๋„ค์ด๋ฒ„ ํ…Œํฌ์ฝ˜์„œํŠธ์—์„œ ๋„ค์ด๋ฒ„ ์ง€๋„ SDK๊ฐœ๋ฐœํ•œ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ง์ ‘ ์–ด๋–ป๊ฒŒํ•˜๋ฉด ์ข‹์„๊นŒ ๋ฌผ์–ด๋ณด๊ธฐ๋„ํ–ˆ๋˜..๊ทผ๋ฐ ์šฐ์—ฐํžˆ ์ธํ„ฐ๋„ท ๋‹ต๋ณ€ ์ฃผ์‹ ๋ถ„์ด๋ž‘ ๋„ค์ด๋ฒ„ํ…Œํฌ์ฝ˜์„œํŠธ์—์„œ ๋ฐœํ‘œํ•˜์‹  ๋ถ„์ด๋ž‘ ๊ฐ™์€ ๋ถ„์ด์…”์„œ ๋Œ€ํ™”๋ฅผ ๋‚˜๋ˆ ๋ณด๋‹ˆ, ์‹ค๋‚ด์—์„œ ์œ ์ € ์œ„์น˜๋ฅผ ์žก์„๋•Œ ๋ถ€์ •ํ™•ํ•˜๊ฒŒ ์žกํž ์ˆ˜ ์žˆ์–ด์„œ ๋‚œ์ˆ˜๊ฐ€ ํ‘œ์‹œ๋˜๋Š” ๊ฒƒ์ผ ์ˆ˜ ์žˆ๊ณ  ๋„ค์–ด๋ฒ„์ง€๋„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” inValid์†์„ฑ์€ (๋„ค์ด๋ฒ„์ง€๋„๊ฐ€ ์ „์„ธ๊ณ„ ์ง€๋„ ์„œ๋น„์Šค๋ฅผ ๋ชฉํ‘œ๋กœ ํ•˜๊ณ ์žˆ๊ธฐ๋•Œ๋ฌธ์—..) 0 ์ดํ•˜์˜ ์ˆ˜๋งŒ ์žก๋Š”๋‹ค๊ณ  ํ•˜์…”์„œ 0,0์ด๋‚˜ ๋‚œ์ˆ˜๊ฐ€ ๊ฑธ๋Ÿฌ์ง€์ง€์•Š๋Š”๋‹ค๊ณ  ํ•˜์…จ์Œ. ๊ฒฐ๊ตญ CoreLocation์„ ์‚ฌ์šฉํ•ด์„œ ์œ„์น˜๋ฅผ ์žก๊ฑฐ๋‚˜ ์ •ํ™•ํ•œ ์œ„์น˜๋ฅผ ํŒ๋ณ„ํ•˜๋Š” ๋กœ์ง์„ ์ปค์Šคํ…€ํ•˜๋Š”๊ฒƒ์œผ๋กœ ๊ฒฐ๋ก ์ด ๋‚ฌ๋Š”๋ฐ, ์‚ฌ์‹ค ๋‚˜์˜ ๋ฌธ์ œ์ƒํ™ฉ์€ ์œ ์ € ์œ„์น˜๊ฐ€ ๋ถ€์ •ํ™•ํ•˜๊ฒŒ ์žกํžˆ๋Š”๊ฒŒ ์•„๋‹ˆ๊ณ  ์œ ์ € ์œ„์น˜๊ฐ€ ์žกํžˆ๊ธฐ ์ „์— 2์ฐจ๋ก€์ •๋„ ๋‚œ์ˆ˜๊ฐ€ ์ฐํžˆ๋Š”๊ฒŒ ๋ฌธ์ œ๋ผ์„œ, ๊ตญ๋‚ด ์œ„/๊ฒฝ๋„๊ฐ€ ์œ ํšจํ•œ ๊ฐ’์œผ๋กœ Range๋ฅผ ์žก์•„์ฃผ๋ฉด ํ•ด๊ฒฐ๋  ๊ฒƒ ๊ฐ™๋‹ค!

- tick mark UISlider ๋งŒ๋“ค๊ธฐ
-

- awesome Swift
```swift
  func compareDifference(compare: NMGLatLng ,value: Double) -> Bool {
      return self.lat - compare.lat > 0.0005 || self.lng - compare.lng > 0.0005
      // ์œ„์ฒ˜๋Ÿผ ๋‹จ ํ•œ ์ค„๋กœ ํ•ด๊ฒฐ
//        if self.lat - compare.lat > 0.0005 || self.lng - compare.lng > 0.0005 {
//            return true
//        } else {
//            return false
//        }
  }

2019.07.22

  • ์Šคํƒ๋ทฐ๋ฅผ ํ’ˆ์€ ํ…Œ์ด๋ธ”๋ทฐ ์…€: ์˜คํ† ๋ ˆ์ด์•„์›ƒ์ด ๋นŒ๋“œ ๋‹จ๊ณ„๊นŒ์ง€๋Š” ๋ฉ€์ฉกํ•˜๊ณ  ์‹ฌ์ง€์–ด ํ™”๋ฉด์— ์˜ฌ๋ผ์™”์„๋•Œ๋„ ๋ฌธ์ œ์—†์ด ๋ถ™๋Š”๋ฐ ์ฝ˜์†”์— breaking ์˜คํ† ๋ ˆ์ด์•„์›ƒ ๊ด€๋ จ ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๊ฐ€ ์–ด๋งˆ๋ฌด์‹œํ•˜๊ฒŒ๋– ์„œโ€ฆ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ์ž˜ ๋œฏ์–ด๋ณด๋‹ˆ ์…€ ์•ˆ์˜ ์Šคํƒ๋ทฐ์— subView๋กœ ๋“ค์–ด๊ฐ€๋Š” ์นด๋“œ๋ทฐ ํ•˜๋‚˜ํ•˜๋‚˜์˜ ์˜คํ† ๋ ˆ์ด์•„์›ƒ์ด ๋ถ€๋ค ์ดํ‚น ๋ผ์„œ ๋‚˜๋Š” ๋ฉ”์‹œ์ง€๋“ค์ด์—ˆ๋‹ค. ๊ทธ ์—๋Ÿฌ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋‚˜๋ฆ„์˜ ๋…ธํ•˜์šฐ๋Š” ๊ฑฐ๊ธฐ์„œ ์ด๊ฑฐ๊นจ์ง€๊ณ  ์ €๊ฑฐ๊นจ์ง€๊ณ  ์—„์ฒญ ๊ธธ๊ฒŒ ์จ๋†“์€ ๊ธ€ ๋ฐ‘์— ์ด๋Ÿฌ์ด๋Ÿฌํ•œ ๊ฒƒ๋“ค์ด ๋ญ๋•Œ๋ฌธ์— ๊นจ์กŒ๋ƒ๋ฉด ์ด๊ฑฐ์•ผ: ํ•˜๊ณ  ๋‚˜์˜ค๋Š” ๋‘ ์ค„์งœ๋ฆฌ ๋ฉ”์‹œ์ง€๊ฐ€ ์žˆ๋Š”๋ฐ ๊ฑฐ๊ธฐ์„œ ์–ด๋–ค ์˜คํ† ๋ ˆ์ด์•„์›ƒ ์„ค์ •๋•Œ๋ฌธ์— ์ด๋Ÿฐ ๋ถ€๋ค ์ดํ‚น์ด ๋๋Š”์ง€ ์›์ธ์ด ๋˜๋Š” ์š”์†Œ๋ฅผ ์ฐพ์•„์ค€๋‹ค. ๋ณด๋‹ˆ๊นŒ ๊ฐ ์นด๋“œ๋ทฐ์˜ height๋ฅผ ์žก์•„์ฃผ๋Š” ์˜คํ† ๋ ˆ์ด์•„์›ƒ๋•Œ๋ฌธ์— ์—๋Ÿฌ๊ฐ€ ๋‚ฌ๋‹ค๊ณ  ์›์ธ์„ ํŒŒ์•…ํ–ˆ๋‹ค.: ๋†’์ด๋ฅผ ์žก์•„์ฃผ์ง€ ์•Š์œผ๋ฉด ์—๋Ÿฌ๊ฐ€ ๋‚ ๊ฑฐ๊ฐ™์•˜๋Š”๋ฐ bottom๊นŒ์ง€ ์žก์€ ์ƒํƒœ์—ฌ์„œ ์—๋Ÿฌ๊ฐ€ ์•ˆ๋‚จ. ์Šคํƒ๋ทฐ๋Š” ๋‚ด๋ถ€์—์„œ๋ถ€ํ„ฐ ์˜คํ† ๋ ˆ์ด์•„์›ƒ์„ ์žก์•„์„œ ์Šˆํผ๋ทฐ์˜ ํฌ๊ธฐ๋ฅผ ์žก๋Š”๋‹ค๊ณ  ์•Œ๊ณ ์žˆ์—ˆ๋Š”๋ฐ, ์ด ๋•Œ๋ฌธ์— ๋†’์ด๋ฅผ ์žก์•„์•ผ ํ•˜๋Š” ์ค„ ์•Œ์•˜๋Š”๋ฐ ์•„๋‹ˆ์—ˆ๋‹ค!

  • Custom UISlider Delegate๋งŒ๋“ค๊ธฐ: ๋ญ”๊ฐ€ ๋‹น์—ฐํžˆ ์žˆ์„ ์ค„ ์•Œ์•˜๋˜ UISliderDelegate๊ฐ€ ์—†๋‹ค..(๋‹นํ™ฉ)
    • ๋‚œ ๊ธฐ๋ณธ ์Šฌ๋ผ์ด๋”๋ฅผ ์Šคํ† ๋ฆฌ๋ณด๋“œ์— addํ•˜๊ณ  IBAction์„ ์—ฐ๊ฒฐํ•ด์„œ ์“ธ ์ˆ˜ ์—†๋Š”๋ฐใ… ใ…  ์ปค์Šคํ…€ ํ•œ ๋‹ค๋ฅธ UISlider๊ฐ€ ์žˆ๋Š”๋ฐ..ใ… ใ… 
    • ๋‹นํ™ฉํ•˜์ง€ ์•Š๊ณ  ์ปค์Šคํ…€ ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ๊นŒ์ง€ ๋งŒ๋“ค์–ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค!
  • UIView.animateํ•จ์ˆ˜๋กœ ์˜คํ† ๋ ˆ์ด์•„์›ƒ constraint๊ฐ’์„ ๋ฐ”๊ฟ”์ฃผ๊ณ ์‹ถ์€๋ฐ ์›€์ง์ž„์ด ์•„๋‹ˆ๋ผ ๋ฟ…ํ•˜๊ณ  ๋ฐ”๋€Œ๋Š”๊ฑฐ๊ฐ™์•„์„œ ์ฐพ์•„๋ณด๋‹ˆ๊นŒ ์ด๋Ÿฐ ์ด์œ ๊ฐ€โ€ฆ.
    • https://stackoverflow.com/a/25650669/10265697

Comments