๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ „์ฒด ๊ธ€179

API ์‚ฌ์ดํŠธ ๋ชจ์Œ (์ƒ์‹œ ์—…๋ฐ์ดํŠธ) https://www.weatherbit.io/ Weatherbit | Weather API - Historical Weather API Simple. Powerful. Reliable. Getting access to weather data or historical weather data has never been easier. Unparalleled Forecast Accuracy We leverage the power of forecast models, and machine learning to deliver the most accurate weather forecast API on www.weatherbit.io ๊ฐ€์ž…ํ•ด์„œ free plan์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ์ œํ•œ๋œ ํšŸ์ˆ˜ ์•ˆ์—์„œ ๊ตญ๊ฐ€, ์ง€์—ญ์˜ ๋‚ ์”จ API.. 2020. 10. 12.
[leetCode] 152. Maximum Product Subarray ์นด๋‹จ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋ณ€ํ˜• ์ €๋ฒˆ leetCode์—์„œ ํ’€์—ˆ๋˜ Maximum Subarray์™€ ๋น„์Šทํ•œ ๋ฌธ์ œ์ด๋‹ค. ๋•Œ๋ฌธ์— ๊ธฐ์กด์— ์ตํ˜”๋˜ ์นด๋‹จ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๋˜์ง€๋งŒ ๋ณ€์ˆ˜๊ฐ€ ์กด์žฌํ•œ๋‹ค. Product๋Š” ๊ณฑ์œผ๋กœ์„œ ์Œ์ˆ˜์™€ ์Œ์ˆ˜์˜ ๊ณฑ์€ ์–‘์ˆ˜๊ฐ€ ๋˜๊ณ  ์–‘์ˆ˜์— ์Œ์ˆ˜๋ฅผ ๊ณฑํ•˜๊ฒŒ ๋˜๋ฉด ์Œ์ˆ˜๊ฐ€ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋Œ€๋น„ํ•˜์—ฌ ์ตœ๋Œ€ ๊ฐ’์„ ๊ตฌํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค. ์นด๋‹จ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด ํ˜„์žฌ ๊ฐ’์œผ๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ์–ด๋ ˆ์ด์™€ ์ด์ „ ์–ด๋ ˆ์ด+ํ˜„์žฌ๊ฐ’์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ์„œ๋ธŒ ์–ด๋ ˆ์ด์˜ ๋น„๊ต๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. class Solution { func maxProduct(_ nums: [Int]) -> Int { var num = nums var maxP = num[0] var minP = num[0] var answer = num[0] for i in 1.. 2020. 10. 12.
[Swift] ํ”„๋กœ์ ํŠธ์— Realm ์ ์šฉํ•˜๊ธฐ (cocoapod ๋ถ€ํ„ฐ ์ฐจ๊ทผ์ฐจ๊ทผ) Swift ํ”„๋กœ์ ํŠธ์— Realm ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ฝ”์ฝ”์•„ํŒŸ์œผ๋กœ install ํ•ด๋ด…์‹œ๋‹ค~ ์šฐ์„  ํ•  ๊ฒƒ์€ Finder์— ์ž์‹ ์˜ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์„ ๋„์›Œ ๋†“์œผ์„ธ์š” ์ œ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ ๋ช…์€ "Universal Memo" ์ž…๋‹ˆ๋‹ค. ์ด์ œ Command + Space bar๋ฅผ ๋ˆŒ๋Ÿฌ์„œ terminal์„ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์‹คํ–‰ ํ•ฉ๋‹ˆ๋‹ค cd๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์„ dragํ•ด์„œ terminal๋กœ ์ด๋™์‹œ์ผœ ์ฃผ์„ธ์š” ๊ทธ๋ฆฌ๊ณ  enter์„ ๋ˆŒ๋Ÿฌ์ฃผ๋ฉด ํ•ด๋‹น ํด๋”์—์„œ ์ž‘์—…์„ ์‹คํ–‰ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์ž์‹ ์˜ ํ”„๋กœ์ ํŠธ๋กœ ์ž‘์—… ํŒŒ์ผ ์œ„์น˜ ๋ณ€๊ฒฝ ๋œ ๊ฑธ ํ™•์ธํ•˜๊ณ  pod init ์„ ์ž…๋ ฅํ•ด ์ฃผ์„ธ์š” ๊ทธ๋Ÿฌ๋ฉด ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์— ๋ณด๋ฉด Podfile์ด ์ƒ์„ฑ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” vi ํŽธ์ง‘๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ terminal๋กœ.. 2020. 10. 8.
[Swift] Notification์œผ๋กœ view์™€ view ๋ฐ์ดํ„ฐ ์ ˆ๋‹ฌํ•˜๊ธฐ ๋‚˜์ค‘์— ์ฐธ๊ณ  ํ•˜๋ ค๊ณ  ์ ๋Š” ๊ธ€ ํด๋ž˜์Šค ์‹ ์›์„ ์ฒดํฌํ•  ์ˆ˜ ์—†๊ฒŒ ๋˜์„œ(?) ๋“œ๋””์–ด Notification์„ ์“ฐ๊ธฐ๋กœ ํ–ˆ๋‹ค! ์™œ RxRxํ•˜๋Š”์ง€ ์•Œ๊ฑฐ ๊ฐ™๋‹ค... ใ…Žใ…Žใ…Ž 1. Notification ๋“ฑ๋กํ•˜๊ธฐ NotificationCenter.default.addObserver(self, selector: #selector(updateDateLabel(_:)), name: .updateYearDate, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(updateHour(_:)), name: .updateHour, object: nil) NotificationCenter.default.addObserver(self, selecto.. 2020. 10. 7.
[leetCode] 53. Maximum Subarray with Swift ์นด๋‹จ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์‰ฝ๊ฒŒ ๊ตฌํ•˜๊ธฐ leetCode 53์€ ๋ชจ๋“  ์›์†Œ์˜ ๊ฐ’์˜ ํ•ฉ์ด ์ตœ๋Œ€๊ฐ’์„ ๊ฐ€์ง€๋Š” ์„œ๋ธŒ ์–ด๋ ˆ์ด๋ฅผ ๊ตฌํ•˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ์ž…๋‹ˆ๋‹ค. ์ด๋•Œ ์„œ๋ธŒ ์–ด๋ ˆ์ด๋Š” ์—ฐ์†์„ฑ์„ ๊ฐ€์ ธ์•ผ ํ•˜๋Š”๋ฐ, ์ด ๋œป์€ ์ค‘๊ฐ„ ์ธ๋ฑ์Šค๋ฅผ ๋›ฐ์–ด ๋„˜์ง€ ์•Š๊ณ  ์ธ๋ฑ์Šค ์ˆœ์„œ๋Œ€๋กœ ๋˜์–ด ์žˆ๋Š” ์–ด๋ ˆ์ด์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฐ์—ด์—์„œ ์ตœ๋Œ€๊ฐ’๋“ค์˜ ์กฐํ•ฉ๋งŒ์„ ์ฐพ์•„ ๊ตฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ฉฐ ์–ด๋–ค ์„œ๋ธŒ ์–ด๋ ˆ์ด๊ฐ€ ๊ฐ€์žฅ ์ตœ๊ณ ์˜ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ๊ตฌํ•˜๋Š” ๊ฒƒ์ด ์ด ๋ฌธ์ œ์— ํฌ์ธํŠธ ์ž…๋‹ˆ๋‹ค. ์„œ๋ธŒ ์–ด๋ ˆ์ด์˜ ์ตœ๋Œ€๊ฐ’์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์—์„œ ๋งŽ์ด ์–ธ๊ธ‰๋˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ Kadane ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. reference Youtube video here ๐Ÿ‘‡ ์šฐ์„  ๋ฌธ์ œ์—์„œ ์ฃผ์–ด์ง„ [-2, 1, -3, 4, -1, 2, 1, -5, 4]๋ฅผ ๋ด…์‹œ๋‹ค. ์—ฌ๊ธฐ์„œ ์ฒซ๋ฒˆ์งธ 4๋ฅผ ์ค‘์ ์œผ๋กœ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์ธ๋ฑ์Šค๋Š” 3์ด๊ณ  ๊ทธ ์ธ๋ฑ์Šค์˜ ๊ฐ’์€ 4์ž…๋‹ˆ๋‹ค.. 2020. 10. 6.
[Swift] Date์™€ DateFormatter๋กœ ํ•œ๊ตญ ํ˜„์žฌ ์‹œ๊ฐ„ ๊ตฌํ•˜๊ณ  UILabel์— ๋„ฃ์–ด๋ณด๊ธฐ ๊ทธ ๋™์•ˆ ๋ฏธ๋ฃจ๊ณ  ์žˆ์—ˆ๋˜ Date๋ฅผ ๋ณผ๋•Œ๊ฐ€ ์˜จ๊ฑฐ ๊ฐ™๋‹ค....๐Ÿคจ Horizontal collectionView์— ์ฒซ ๋ฒˆ์งธ ์…€์„ ํ˜„์žฌ ๋‚ ์งœ๋กœ ๊ธฐ์ค€ํ•ด์„œ ๊ทธ ๋‹ค์Œ ๋‚ ์— ๋‹ค์Œ ์…€์„ ํ•  ๋‹นํ•ด ์ฃผ๋Š” ์‹์œผ๋กœ ๋งŒ๋“ค๊ฒ๋‹ˆ๋‹ค! ์šฐ์„  now๋ผ๋Š” ํ”„๋กœํผํ‹ฐ๋ฅผ ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค. let now = Date().timeIntervalSince1970 Date() ๋Š” ํ˜„์žฌ ๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ ๋ฐ˜ํ™˜ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ timeIntervalSince1970์€ 1970๋…„ ์ดํ›„๋กœ ๋ช‡ ์ดˆ๊ฐ€ ํ˜๋ €๋Š”์ง€ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ํ˜„์žฌ ์‹œ๊ฐ„์„ now๋ผ๋Š” ํ”„๋กœํผํ‹ฐ์— ์ง€์ •ํ•ด ์ค๋‹ˆ๋‹ค. ๋‹ค์Œ์œผ๋กœ DateFormatter์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. let date: DateFormatter = { let df = DateFormatter() df.locale = Locale(identifier: "ko.. 2020. 9. 29.
[Swift] UICollectionViewCell ์•ˆ์— UICollectionView ๋„ฃ๊ธฐ UICollectionViewCell ๋˜ํ•œ ํƒ€๊ณ  ํƒ€๊ณ  ์˜ฌ๋ผ๊ฐ€๋‹ค ๋ณด๋ฉด UIView์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ์กด์— ์ ์šฉํ•œ ๋ฐฉ์‹๊ณผ ๋˜‘๊ฐ™์ด ํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๊ตฌ์„ฑ์„ ๋ณด๋ฉด ์ฃผํ™ฉ์ƒ‰ ๋ทฐ๋Š” 3๊ฐœ์˜ ์„น์…˜์„ ๊ฐ€์ง„ UICollectionView์ด๊ณ  ์ดˆ๋ก์ƒ‰ ๊ตฌ์„ฑ์„ ๋ณด๋ฉด ์ฃผํ™ฉ์ƒ‰ ๋ทฐ๋Š” 3๊ฐœ์˜ ์„น์…˜์„ ๊ฐ€์ง„ UICollectionView์ด๊ณ  ์ดˆ๋ก์ƒ‰์€ ๊ฐ ์„น์…˜์— ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ํ•˜๋‚˜์˜ UICollectionViewCell ์ž…๋‹ˆ๋‹ค ๊ทธ๋ฆฌ๊ณ  ๋ถ„ํ™์ƒ‰์€ ๋งˆ์ง€๋ง‰ ์„น์…˜์— ์žˆ๋Š” UICollectionViewCell์— UICollectionView๋ฅผ ๋„ฃ๊ณ  sub cell์„ ๊ตฌํ˜„ํ•ด ์ค€ ๋ชจ์Šต์ž…๋‹ˆ๋‹ค ์šฐ์„  ๋งˆ์ง€๋ง‰ ์ค„์— ์žˆ๋Š” ์ดˆ๋ก์ƒ‰ UICollectionViewCell์˜ ํด๋ž˜์Šค ์ด๋ฆ„์„ MinutePickerCell ์ด๋ผ๊ณ  ํ•˜๊ณ  ์—ฌ๊ธฐ์— ๋ถ„ํ™์ƒ‰์˜ UICollectionView๋ฅผ .. 2020. 9. 29.
[Swift] UICollectionView์—์„œ Section์„ ๋‚˜๋ˆ  ๋ณด์ž! ์ค€๋น„๋ฌผ & ๋“ค์–ด๊ฐ€๋ฉฐ ์ด์ „ ํฌ์ŠคํŒ…์— ์ด์–ด์„œ ์ž‘์—…ํ•˜๋Š” ํŠœํ† ๋ฆฌ์–ผ ์ด์ง€๋งŒ ์ด๋ฏธ ์ž‘์„ฑ๋œ ๊ธฐ๋ณธ UICollectionView๋งŒ ์žˆ๋‹ค๋ฉด ์กฐ๊ธˆ์ด๋‚˜๋งˆ ๋„์›€์ด ๋  ๊ฑฐ ๊ฐ™์Šต๋‹ˆ๋‹ค! ์ด๋ฒˆ์— ๊ตฌํ˜„ํ•  ๊ฒƒ์€ UICollectionView๋ฅผ 3๊ฐœ์˜ Section์œผ๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค~ (์„น์…˜์— ๋“ค์–ด๊ฐ€๋Š” ์…€์€ ๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ ๋‹ค๋ฃจ๊ฒ ์Šต๋‹ˆ๋‹ค.) ๊ฐ€๋” UI ํŠœํ† ๋ฆฌ์–ผ ๋ณด๋ฉด ์ƒ๋‹จ ์ปฌ๋ ‰์…˜ ๋ทฐ๋Š” ์ž๋™์œผ๋กœ ๋„˜์–ด๊ฐ€๋Š” ์นด๋“œ๋ทฐ, ๋ฐ”๋กœ ์•„๋ž˜์—๋Š” ๋‹ค๋ฅธ ์ปฌ๋ ‰์…˜ ๋ทฐ๋ฅผ ๋†“๋Š” ๋‹ค ๋˜๊ฐ€, ๊ฐ™์€ ํ™”๋ฉด์—์„œ ๋‹ค๋ฅธ ์ปฌ๋ ‰์…˜ ๋ทฐ๋“ค์ด ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ ๊ฐ๊ฐ์˜ ์ปฌ๋ ‰์…˜ ๋ทฐ๋ฅผ ๊ตฌํ˜„ํ•ด๋„ ๋˜๊ฒ ์ง€๋งŒ Section์„ ๋‚˜๋ˆ„์–ด ๊ตฌํ˜„ํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค~ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„๋ด…์‹œ๋‹ค~~ section์˜ ๊ฐฏ์ˆ˜๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ฉ”์†Œ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. optional func numberO.. 2020. 9. 28.
[Swift] Anchor ์‚ฌ์šฉํ•ด์„œ UIView ๋„ฃ๊ธฐ ๋“ค์–ด๊ฐ€๊ธฐ์— ์•ž์„œ... Programmatically ๋ทฐ์— ๋ทฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. interface builder ์—์„œ UIView๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  frame์„ ์ง€์ •ํ•ด ์ค˜๋„ ๋˜์ง€๋งŒ ์ฝ”๋“œ๋กœ view๋ฅผ ์ƒ์„ฑํ•ด์„œ addSubView ํ•ด์ฃผ๊ฑฐ๋‚˜ ํœด๋Œ€ํฐ ๋ฐฉํ–ฅ(width๊ฐ€ ๋ฐ”๋€Œ๋Š” ๊ฒฝ์šฐ), safe Area ๋“ฑ์€ Anchor๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ด ํŽธํ•  ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ „์— ํฌ์ŠคํŒ… ํ•œ collectionView์—์„œ ์‹œ์ž‘ํ•˜๋ฉฐ ์ด๋•Œ ๋ฐœ์ƒํ•œ ์˜ค๋ฅ˜๋Š” width๊ฐ€ ์ œ๋Œ€๋กœ ๋‚˜์˜ค์ง€ ์•Š์•„ ์งค๋ฆฌ๋Š” ๊ฒฝ์šฐ์˜€์Šต๋‹ˆ๋‹ค. Anchor๋ฅผ ํ†ตํ•ด์„œ ์–ด๋–ป๊ฒŒ ๊ณ ์น  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„๋ด…์‹œ๋‹ค. ์ฝ”๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ view๋ฅผ ์ž‘์„ฑํ•ด์„œ ๋„ฃ์–ด์ฃผ๊ธฐ ์œ„ํ•ด storyboard์— ์ถ”๊ฐ€ํ•œ ๋ทฐ๋ฅผ ์‚ญ์ œํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค ์—ฐ๊ฒฐ๋œ IBOutlet ์‚ญ์ œ๋„ ๊ผญ ํ•ด์ค๋‹ˆ๋‹ค ViewController.swif.. 2020. 9. 28.
[iOS] Xcode ๋‘ ๋ฒ„์ „ ๊ฐ™์ด ๊น”๊ธฐ Xcode 12 ๋ฒ„์ „ ์—…๋ฐ์ดํŠธ ๊ฐ€๋Šฅํ•˜์ž ๋งˆ์ž ์—…๋ฐ์ดํŠธ ํ–ˆ๋”๋‹ˆ ์›ฌ๊ฑธ Xcode 11์ด ํ•„์š”ํ•ด ์กŒ๋‹ค... ๋‹น์—ฐํžˆ ์ธํ„ฐํŽ˜์ด์Šค ๋นŒ๋” ํˆด ๋ฒ„์ „๋„ ๋ฐ”๋€Œ๋Š” ๊ฑด๋ฐ ์—…๋ฐ์ดํŠธ ๋ฒ„ํŠผ ๋ฐ”๋€Œ์ž๋งˆ์ž ์†๊ฐ€๋ฝ์ด ๋งˆ์Œ๋Œ€๋กœ ๋ˆŒ๋Ÿฌ๋ฒ„๋ฆฌ๋Š” ๊ฑธ ์šฐ์งธ ์ž ์šฐ์„  Finder > ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ (ํ˜น์€ Application)์œผ๋กœ ๋“ค์–ด๊ฐ€ ์ค๋‹ˆ๋‹ค ์—…๋ฐ์ดํŠธ ํ•œ Xcode์˜ ํŒŒ์ผ ๋ช…์„ ๋ฐ”๊ฟ” ์ฃผ์„ธ์š” (๋ญ์•ผ ๋„ค์ด๋ฒ„ ์›จ์ผ ์™œ ๋‘ ๊ฐœ์ง€..ใ…Žใ…Žใ…Ž) ์ž ์ด์ œ https://developer.apple.com/download/more/ ๋กœ๊ทธ์ธ - Apple idmsa.apple.com ์•„๋ž˜ ๋งํฌ๋กœ ๋“ค์–ด๊ฐ€ ์ค๋‹ˆ๋‹ค! ๋กœ๊ทธ์ธ ํ•„์š”ํ•ด์š” ๋กœ๊ทธ์ธ ํ•ด์ฃผ๊ณ  ์›ํ•˜๋Š” ๋ฒ„์ „์„ ๊ฒ€์ƒ‰ํ•ด ์ค๋‹ˆ๋‹ค. ๋‹ค์šด ๋ฐ›์•„ ์ฃผ์„ธ์š” one hour later... ๋‹ค์šด ๋ฐ›์€ Xcode ์‹คํ–‰ํ•ด ์ฃผ๋ฉด ํ•˜๋‚˜์˜ ๋งฅ์—์„œ.. 2020. 9. 28.
[Swift] UIViewController ์— UICollectionView ๋„ฃ๊ธฐ ์•ˆ๋‚ด ํ•ด๋‹น ํŠœํ† ๋ฆฌ์–ผ์€ ์Šคํ† ๋ฆฌ๋ณด๋“œ์—์„œ UICollectionViewController ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ UIViewController์— UIView๋ฅผ ๋„ฃ๊ณ  ํ•ด๋‹น ๋ถ€๋ถ„์— UICollectionView๋ฅผ ๋„ฃ์–ด์ฃผ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ์Šคํ† ๋ฆฌ ๋ณด๋“œ์—์„œ UICollectionViewController๋กœ ์‹œ์ž‘ํ•˜๊ณ ์ž ํ•˜์‹œ๋ฉด ๋‹ค๋ฅธ ๊ธ€์„ ์ฐธ๊ณ ํ•ด ์ฃผ์„ธ์š”. ์ค€๋น„ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•ด ์ฃผ๊ณ  ๋นŒ๋“œ ํ•ด์ค๋‹ˆ๋‹ค. ์Šคํ† ๋ฆฌ๋ณด๋“œ๋กœ ์‹คํ–‰ ๋˜๋Š” ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์Šคํ† ๋ฆฌ๋ณด๋“œ๋กœ ๊ฐ€์„œ UIView๋ฅผ ์ถ”๊ฐ€ํ•ด ์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค. command + shift + L ์›ํ•˜๋Š” ์˜์—ญ์— ๋งž์ถ”์–ด constraints๋ฅผ ์ถ”๊ฐ€ํ•ด ์ค๋‹ˆ๋‹ค. ์ด์ œ ViewController.swift๋ฅผ ์—ด์–ด ์ค๋‹ˆ๋‹ค. UICollectionView๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ UICol.. 2020. 9. 28.
UICollectionView must be initialized with a non-nil layout parameter ์—๋Ÿฌ Exception NSException * "UICollectionView must be initialized with a non-nil layout parameter" 0x000060000266a430 ์—๋Ÿฌ ๋ฉ”์‹œ์ง€์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด UICollectionView๋Š” nil ํƒ€์ž…์ด ์•„๋‹Œ layout ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ดˆ๊ธฐํ™” ํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ปฌ๋ ‰์…˜ ๋ทฐ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋ ˆ์ด์•„์›ƒ์œผ๋กœ ์ดˆ๊ธฐํ™” ์‹œ์ผœ ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค! let collectionView: UICollectionView = { let layout = UICollectionViewFlowLayout() layout.minimumLineSpacing = 10 layout.scrollDirection = .vertical layout.sectionI.. 2020. 9. 28.