๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90
๋ฐ˜์‘ํ˜•

๐ŸŽ iOS/iOS49

[iOS] ์• ํ”Œ์ง€๋„์— ๋ฒ”์œ„ ํ‘œ์‹œํ•˜๊ณ  ์•ˆ์— ํŠน์ • ์œ„์น˜๊ฐ€ ์†ํ•ด์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ(Make range and Verify location is inside with MapKit) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์ €๋ฒˆ ์‹œ๊ฐ„์—๋Š” ์›ํ•˜๋Š” ์œ„์น˜๋ฅผ ํ‘œ์‹œํ•˜๊ณ  ์ด๋ฏธ์ง€์™€ ๋ ˆ์ด๋ธ”์„ ๋„ฃ์–ด๋ณด์•˜๋Š”๋ฐ์š”. (ํ˜น์‹œ ์•ˆ๋ณด์‹  ๋ถ„๋“ค์€ ์—ฌ๊ธฐ ๋ฅผ ํ†ตํ•ด์„œ ๋ณด๊ณ  ์™€์ฃผ์„ธ์š”!) ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” ์›ํ•˜๋Š” ์œ„์น˜๊ฐ€ ํŠน์ • ๋ฒ”์œ„ ์•ˆ์— ์†ํ•ด์žˆ๋Š”์ง€ ์•„๋‹Œ์ง€ ํ™•์ธํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. MKMapViewDelegate ์ถ”๊ฐ€ํ•˜๊ธฐ ๊ฐ€์žฅ ๋จผ์ € ViewController์— MKMapViewDelegate๋ฅผ ์ฑ„ํƒํ•ด์ฃผ์„ธ์š”. (๋‹น์—ฐํžˆ import MapKit๋„ ํ•ด์•ผ๊ฒ ์ฃ ?) class ViewController: UIViewController ,MKMapViewDelegate{...} ๋งˆ์ปค ์„ค์ •ํ•˜๊ธฐ ์›ํ•˜๋Š” ์œ„์น˜์— ํ‘œ์‹œํ•  ๋งˆ์ปค๋ฅผ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”. ์ €๋ฒˆ ์‹œ๊ฐ„์—๋Š” ํ™๋Œ€์ž…๊ตฌ์—ญ๋งŒ ํ–ˆ์ง€๋งŒ ํ™๋Œ€์ž…๊ตฌ์—ญ ๊ทผ์ฒ˜์ธ ์Šคํƒ€๋ฒ…์Šค๊นŒ์ง€ ์ถ”๊ฐ€ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. let mark1 = Marker( title: .. 2021. 3. 18.
[iOS] ์• ํ”Œ์ง€๋„์— ์›ํ•˜๋Š” ์œ„์น˜์— ๊ธ€์”จ์™€ ์ด๋ฏธ์ง€ ๋„ฃ๊ธฐ ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์ €๋ฒˆ ์‹œ๊ฐ„์—๋Š” ์• ํ”Œ์ง€๋„์— ์›ํ•˜๋Š” ์œ„์น˜ ํ‘œ์‹œํ•˜๋Š” ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜๋Š”๋ฐ์š”. (ํ˜น์‹œ ์•ˆ๋ณด์‹  ๋ถ„๋“ค์€ ์—ฌ๊ธฐ ๋ฅผ ํ†ตํ•ด์„œ ๋ณด๊ณ  ์™€์ฃผ์„ธ์š”!) ์—ฌ๊ธฐ์„œ ๋” ์—…๊ทธ๋ ˆ์ด๋“œ ํ•ด์„œ ์›ํ•˜๋Š” ์œ„์น˜์— ์ €๋ ‡๊ฒŒ ์ •ํ•ด์ง„ ๋งˆํฌ ํ‘œ์‹œ๋ง๊ณ  ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ์ด๋ฏธ์ง€๋‚˜ ๋ ˆ์ด๋ธ”์„ ๋„ฃ์„ ์ˆ˜ ์—†์„๊นŒ? ํ•˜๋‹ค๊ฐ€ ์ฐพ์•„๋‚ด์„œ ์ •๋ฆฌํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ MKMapViewDelegate ๋จผ์ € ์ง€๋‚œ ์‹œ๊ฐ„์— ๋งˆํฌ๋ฅผ ํ‘œ์‹œํ–ˆ๋˜ ViewController์— MKMapViewDelegate๋ฅผ ์ฑ„ํƒํ•ด์ฃผ์„ธ์š”! class ViewController: UIViewController ,MKMapViewDelegate{ override func viewDidLoad() { super.viewDidLoad() mapView.delegate = self.. 2021. 3. 16.
[iOS] ์• ํ”Œ์ง€๋„ ์ด์šฉํ•ด์„œ ์›ํ•˜๋Š” ์œ„์น˜ ํ‘œ์‹œํ•˜๊ธฐ(Mark Location Using MapKit) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜ ์•Œ์•„๋ณผ๊ฑด ์ฝ”์ฝ”์•„ ํ„ฐ์น˜ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์ œ๊ณตํ•˜๋Š” MapKit์„ ์ด์šฉํ•ด์„œ ์›ํ•˜๋Š” ์œ„์น˜์— ๋งˆํฌ๋ฅผ ํ•ด๋ณผ๊ฑฐ์—์š”. ๋ฐ”๋กœ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค~ Storyboard ๊ฐ€์žฅ ๋จผ์ € ์Šคํ† ๋ฆฌ๋ณด๋“œ๋กœ ์ด๋™ํ•ด์„œ Map Kit View๋ฅผ ๊ฒ€์ƒ‰ํ•œ ๋’ค ์•„๋ž˜์™€ ๊ฐ™์ด ViewController์— ์„ธํŒ…ํ•ด์ฃผ์„ธ์š”! ViewController ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๋กœ ์™€์„œ ์Šคํ† ๋ฆฌ๋ณด๋“œ์—์„œ ๋งŒ๋“ค์–ด์ค€ mapkitview๋ฅผ ์—ฐ๊ฒฐํ•ด์ฃผ์„ธ์š”! @IBOutlet weak var mapView: MKMapView! Marker ๊ทธ ๋‹ค์Œ ์›ํ•˜๋Š” ์œ„์น˜์— ํ‘œ์‹œ๋  Marker ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. title๊ณผ subtitle์€ ์›ํ•˜๋Š” ์œ„์น˜๋ฅผ ํ„ฐ์น˜ํ–ˆ์„๋•Œ ์ด๋ฆ„๊ณผ ์„ค๋ช…์„ ๋œปํ•˜๊ตฌ์š”. coordinate๋Š” ์›ํ•˜๋Š” ์œ„์น˜๋ฅผ ์œ„๋„์™€ ๊ฒฝ๋„๋กœ ๋„ฃ์–ด์ฃผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. impor.. 2021. 3. 15.
[iOS] ์›ํ•˜๋Š” ์ปจํŠธ๋กค๋Ÿฌ๋กœ ๋˜๋Œ์•„๊ฐ€๊ธฐ(feat.unwind) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ์›ํ•˜๋Š” ์ปจํŠธ๋กค๋Ÿฌ๋กœ ๋˜๋Œ์•„๊ฐ€๋Š” ๋ฐฉ๋ฒ•์ธ unwind์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค! ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ (๋„ค๋น„๊ฒŒ์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ๋กœ ์ด๋™ํ•˜์…จ์„ ๊ฒฝ์šฐ์—๋งŒ ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค ใ…œ) ์•„๋ž˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ A -> B -> C -> D ๋กœ ์ด๋™ํ•˜๋Š” ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๋“ค์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ• ๊ฒŒ์š”~ ๊ทธ๋Ÿฐ๋ฐ ์—ฌ๊ธฐ์„œ ๋‚ด๊ฐ€ ๋งŒ์•ฝ D๊นŒ์ง€ ์ด๋™ํ•˜๊ณ  A๋กœ ๋Œ์•„๊ฐ€๊ณ  ์‹ถ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ• ๊นŒ์š”? AViewController AViewController์— ์•„๋ž˜์™€ ๊ฐ™์ด ์ง์ ‘ IBAction์„ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. @IBAction func unwindToAViewController (segue : UIStoryboardSegue) { } DViewController ๊ทธ ๋‹ค์Œ ์Šคํ† ๋ฆฌ๋ณด๋“œ๋กœ ์ด๋™ํ•˜์…”์„œ DViewController์˜ ์œ— ๋ถ€๋ถ„์˜ ๊ฐ€์žฅ ์ฒซ๋ฒˆ์งธ ์•„.. 2021. 3. 3.
[iOS] UserDefaults์— ๊ฐ์ฒด ์ €์žฅํ•˜๊ธฐ (Encode & Decode Object in UserDefaults Data ) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ UserDefaults์— ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณผ๊ฑด๋ฐ์š”. ์ €๋Š” UserDefaults์— ๋ชจ๋ธ ์ž์ฒด๋ฅผ ๋„ฃ๊ณ  ์ €์žฅํ•˜๊ณ  ์‹ถ์€๋ฐ ๊ทธ๊ฒŒ ์ž˜ ์•ˆ๋˜๋”๋ผ๊ตฌ์š”... ๊ทธ๋ž˜์„œ ์—ด์‹ฌํžˆ ๊ตฌ๊ธ€๋งํ•ด์„œ ์•Œ๊ฒŒ๋œ ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค! ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”! Food ์ €๋Š” ์ œ๊ฐ€ ๋จน์—ˆ๋˜ ์Œ์‹์˜ ์ด๋ฆ„,๊ฐ€๊ฒฉ,๋ง›์žˆ์—ˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์Œ์‹์ด๋ผ๋Š” ๊ตฌ์กฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ฒŒ์š”! Codable์€ UserDefaults์— ์ €์žฅํ•˜๊ณ  ๋นผ์˜ค๊ธฐ ์œ„ํ•ด์„œ Encode,Decode ๊ณผ์ •์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฑ„ํƒํ•˜์˜€๊ณ  Equatable์€ Food๊ฐ์ฒด๋ฅผ ์„œ๋กœ ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•ด ์ฑ„ํƒํ•˜์˜€์Šต๋‹ˆ๋‹ค. import Foundation struct Food:Codable,Equatable{ let name:String let pri.. 2021. 2. 26.
[iOS] ๊ฒ€์ƒ‰ํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•œ ๊ธ€์ž ํ•„ํ„ฐ๋งํ•œ ๊ฐ์ฒด ํ…Œ์ด๋ธ”๋ทฐ์— ๋„์šฐ๊ธฐ(Search Object Filtering) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์–ธ์ œ๋‚˜ ๊ทธ๋žฌ๋“ฏ ์ œ๋ชฉ ์ •ํ•˜๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ํž˜๋“œ๋„ค์š”... ์˜ค๋Š˜์€ ์•Œ์•„๋ณผ๊ฑด ์„œ์น˜๋ฐ”์— ๊ฒ€์ƒ‰ํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•œ ๊ธ€์ž๊ฐ€ ํฌํ•จ๋œ ๊ฒƒ๋“ค์„ ํ•„ํ„ฐ๋งํ•œ ๊ฒƒ์„ ํ…Œ์ด๋ธ”๋ทฐ์— ๋„์šฐ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์€ ์ €๋ฒˆ ์‹œ๊ฐ„์— ์—‘์…€ ํŒŒ์‹ฑํ•˜๋Š”๋ฒ•์—์„œ ๋ฐฐ์› ๋˜ ๋‚˜๋ผ์™€ ๋„์‹œ ์ด๋ฆ„๋“ค์ด ๋‹ด๊ธด ๋ฐ์ดํ„ฐ๋ฅผ ํ™œ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ํ˜น์‹œ ๋ชป๋ณด์‹  ๋ถ„๋“ค์€ ์—ฌ๊ธฐ ์—์„œ ๋ณด๊ณ ์™€์ฃผ์„ธ์š”! ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Preview Storyboard ์•„๋ž˜์™€ ๊ฐ™์ด ํ…Œ์ด๋ธ”๋ทฐ๋ฅผ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. (์ฃผ์˜ํ•˜์‹ค ์ ์€ ๋ฐ˜๋“œ์‹œ UIViewController๋กœ ๋งŒ๋“œ์‹  ํ›„์— TableView๋ฅผ AutoLayoutํ•ด์ฃผ์„ธ์š”!) ๊ทธ๋ฆฌ๊ณค ํ•ด๋‹น ํ…Œ์ด๋ธ”๋ทฐ๋ฅผ control์„ ๋ˆ„๋ฅด๊ณ  ๋“œ๋ž˜๊ทธํ•ด์„œ ViewController์— ๊ฐ€์ ธ๊ฐ€์„œ dataSource๋ฅผ ์ฒดํฌํ•ด์ฃผ์„ธ์š”. AddViewController ์ œ์ผ ๋จผ์ € ํ…Œ.. 2021. 2. 25.
[iOS] ํ˜„์žฌ ์œ„์น˜ ๋‚ ์”จ & 24์‹œ๊ฐ„ & 7์ผ ๋ฐ์ดํ„ฐ ๋„์šฐ๊ธฐ - 2(Current Location Get weather 24 hours a day, 2 week) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์ €๋ฒˆ ์‹œ๊ฐ„์— ๋‚ ์”จ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๋Š” ๊ณผ์ •์„ ํ–ˆ์—ˆ๋Š”๋ฐ์š”. (ํ˜น์‹œ ๋ชป๋ณด์‹  ๋ถ„๋“ค์€ ์—ฌ๊ธฐ ๋กœ ์ด๋™ํ•ด์„œ ๋จผ์ € ๋ณด๊ณ ์™€์ฃผ์„ธ์š”!) ์ด๋ฒˆ์—๋Š” ๋ฐ›์•„์˜จ ๋‚ ์”จ ๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉํ•ด์„œ ํ™”๋ฉด์— ๋„์›Œ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค! WeatherView ๋จผ์ € WeatherView๋กœ ์ด๋™ํ•ด์„œ ํ˜„์žฌ,24์‹œ๊ฐ„,์ฃผ๊ฐ„ ๋‚ ์”จ๋ฅผ ๋‹ด์„ ๋ณ€์ˆ˜๋“ค์„ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. var currentWeather:CurrentWeather! var hourlyWeathers:[HourlyWeather] = [] var weeklyWeathers:[WeeklyWeather] = [] ๋จผ์ € ํ˜„์žฌ ๋‚ ์”จ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ ๋ ˆ์ด๋ธ”์— ๋งž๊ฒŒ ์„ธํŒ…ํ•ด์ค๋‹ˆ๋‹ค. func setupCurrentWeather() { self.cityLabel.text = currentWeather.c.. 2021. 2. 24.
[iOS] ํ˜„์žฌ ์œ„์น˜ ๋‚ ์”จ & 24์‹œ๊ฐ„ & 7์ผ ๋ฐ์ดํ„ฐ ๋„์šฐ๊ธฐ - 1(Current Location Get weather 24 hours a day, 2 week) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค!! ์ €๋ฒˆ ์‹œ๊ฐ„์— ํ˜„์žฌ ์œ„์น˜์— ๋Œ€ํ•œ ๊ถŒํ•œ์„ ๋ฐ›์•„์˜ค๊ณ  ํ˜„์žฌ ์œ„์น˜๋ฅผ ์•Œ์•„๋ณด๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜๋Š”๋ฐ์š”. ํ˜น์‹œ๋ผ๋„ ๋ชป๋ณด์‹  ๋ถ„๋“ค์€ ์—ฌ๊ธฐ ๋กœ ์ด๋™ํ•˜์…”์„œ ๋ณด๊ณ  ์™€์ฃผ์„ธ์š”~ ์˜ค๋Š˜์€ ํ˜„์žฌ ์œ„์น˜์˜ ๋‚ ์”จ์™€ ์•ž์œผ๋กœ์˜ 24์‹œ๊ฐ„,์•ž์œผ๋กœ์˜ ์ผ์ฃผ์ผ๊ฐ„ ๋‚ ์”จ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์™€์„œ ํ™”๋ฉด์— ๋„์›Œ๋ณผ๊ฑฐ์—์š”. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Preview Weatherbit.io ๋‚ ์”จ ์ •๋ณด๋ฅผ ๋ฐ›๋Š” ์„œ๋น„์Šค๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด weatherbit์—์„œ ์ œ๊ณตํ•˜๋Š” API๋ฅผ ์ด์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. Weatherbit | Weather API - Historical Weather API Simple. Powerful. Reliable. Getting access to weather data or historical weather data has never be.. 2021. 2. 22.
[iOS] ์•ฑ์‚ฌ์šฉ์ค‘ ์œ„์น˜ ๊ถŒํ•œ ๋ฐ›์•„์˜ค๊ณ  ํ˜„์žฌ ์œ„์น˜ ์•Œ์•„๋‚ด๊ธฐ ( Request Location Authorization & Detect Current Location) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜ ์•Œ์•„๋ณผ๊ฑด ์ง€๋‚œ ์‹œ๊ฐ„์— ์ด์–ด์„œ ๋‚ ์”จ์— ๊ด€๋ จ๋œ ์ •๋ณด์ธ๋ฐ์š”. ํ˜„์žฌ ๋‚ด๊ฐ€ ์žˆ๋Š” ์ง€์—ญ์— ๋‚ ์”จ๋ฅผ ์•Œ๊ธฐ ์œ„ํ•ด์„  ํ˜„์žฌ ์œ„์น˜๋ฅผ ์•Œ์•„์•ผ ํ•˜์ž–์•„์š”? ํ˜„์žฌ ์œ„์น˜๋ฅผ ์•Œ๊ธฐ ์œ„ํ•ด์„  ์‚ฌ์šฉ์ž์˜ ๋™์˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์˜ค๋Š˜์€ ์‚ฌ์šฉ์ž์˜ ์œ„์น˜ ๊ถŒํ•œ ๋ฐ›๊ธฐ์ž…๋‹ˆ๋‹ค! ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”! Info.plist ๊ฐ€์žฅ ๋จผ์ € info.plist์—์„œ ์•ฑ์„ ์‚ฌ์šฉํ•˜๋Š”๋™์•ˆ ์œ„์น˜๋ฅผ ๋ฐ›์•„๋„ ๋˜๋ƒ๋Š” ๊ถŒํ•œ์„ ์„ค์ •ํ•ด์ค๋‹ˆ๋‹ค. NSLocationWhenInUseUsageDescription ์œ„์น˜ ์ข€ ์“ธ๊ฒŒ? ์•„๋ž˜์™€ ๊ฐ™์ด ์ถ”๊ฐ€ํ•˜์…”๋„ ๋ฉ๋‹ˆ๋‹ค! ๊ทธ๋ฆฌ๊ณ  ๋ฐ”๋กœ ViewController๋กœ ๊ฐ€์ค๋‹ˆ๋‹ค. (ํŽธ์˜์ƒ WeatherViewController๋ผ๊ณ  ๋ถ€๋ฅผ๊ฒŒ์š”!) WeatherViewController ๋จผ์ € CoreLocation์„ import ํ•ด์ค๋‹ˆ.. 2021. 2. 19.
[iOS]Swift๋กœ ์—‘์…€ํŒŒ์ผ ํŒŒ์‹ฑํ•ด์„œ ํ…Œ์ด๋ธ”๋ทฐ์— ๋„์šฐ๊ธฐ(Parse Excel with Swift) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ํ‰์†Œ์— ์—‘์…€์— ์žˆ๋Š” ์ •๋ณด๋ฅผ ์–ด๋–ป๊ฒŒ ๊ด€๋ฆฌํ• ์ˆ˜ ์—†์„๊นŒ? ๋ฅผ ์ƒ๊ฐํ•˜๋‹ค๊ฐ€ ์—‘์…€์„ ํŒŒ์‹ฑํ•˜๋Š”๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ๊ฒŒ๋ผ์„œ ์ •๋ณด๋ฅผ ๊ณต์œ ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค! ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Preview Excel ๋จผ์ € Excel ํŒŒ์ผ์ธ .csv ํŒŒ์ผ์„ ์ค€๋น„ํ•ด์ฃผ์„ธ์š”! ์ €๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‚˜๋ผ์™€ ๋„์‹œ ๊ทธ๋ฆฌ๊ณ  ๋‚˜๋ผ์ฝ”๋“œ๊ฐ€ ์žˆ๋Š” ์—‘์…€์ •๋ณด๋ฅผ ์ค€๋น„ํ–ˆ์Šต๋‹ˆ๋‹ค. (ํ˜น์‹œ ํ•„์š”ํ•˜์‹  ๋ถ„๋“ค์„ ์œ„ํ•ด ํŒŒ์ผ์„ ์ฒจ๋ถ€ํ•ด๋†“๊ฒ ์Šต๋‹ˆ๋‹ค!) Xcode ์ด ํŒŒ์ผ์„ Xcode ํ”„๋กœ์ ํŠธ ์•ˆ์— ๋„ฃ์–ด์ฃผ์„ธ์š”! ๊ทธ๋Ÿฌ๋ฉด ์—‘์…€์•ˆ์— ์žˆ๋Š” ์ •๋ณด๋“ค์ด Xcode ์•ˆ์—์„  ์•„๋ž˜์™€ ๊ฐ™์ด ๋ณด์ด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. Storyboard ๋‚˜๋ผ์ด๋ฆ„๊ณผ ๋„์‹œ๋ฅผ ๋„์šธ ํ…Œ์ด๋ธ”๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๋งŒ๋“ค์–ด์ค์‹œ๋‹ค! ํ…Œ์ด๋ธ”๋ทฐ์…€์—์„œ Style์„ Subtitle๋กœ ๋ฐ”๊พธ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ž๋™์œผ๋กœ Title๊ณผ Subtitle์ด .. 2021. 2. 15.
[iOS ๋ฉด์ ‘์งˆ๋ฌธ] KVO๋ž€? ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ iOS๋ฉด์ ‘์งˆ๋ฌธ์— ์ž์ฃผ ๋‚˜์˜ค๋Š” KVO์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. KVO๋ž€? ๊ณต์‹ ๋ฌธ์„œ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด์„ํ•ด๋ณด๋ฉด KVO๋Š” Key Value Observing์˜ ์ค„์ž„๋ง์ด๊ณ  ๋‹ค๋ฅธ ๊ฐ์ฒด์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์•Œ๋ ค์ฃผ๋Š” ์ฝ”์ฝ”์•„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจํ„ด์ด๋ผ๊ณ  ํ•˜๋„ค์š”. ํ”„๋กœํผํ‹ฐ ์˜ต์ €๋ฒ„ willSet๊ณผ disSet์ด๋ž‘ ์œ ์‚ฌํ•˜์ง€๋งŒ ์™ธ๋ถ€์— ๊ด€์ฐฐ์ž๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช…๋“œ๋ฆฌ๋ฉด ๊ด€์ฐฐํ•˜๊ณ  ์‹ถ์€ ๊ฐ์ฒด์— ์˜ต์ €๋ฒ„๋ฅผ ๋‹ฌ๊ณ  ๊ทธ ๊ฐ’์ด ๋ณ€ํ• ๋•Œ ๋ฐ”๋€Œ๊ธฐ์ „ ๊ฐ’์ด๋ž‘ ๋ฐ”๋€๊ฐ’์„ ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ์ด๋ผ๊ณ  ๋ณด๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๋ฐฉ๋ฒ• KVO๋Š” Objective-C ๋Ÿฐํƒ€์ž„์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค. ๊ณ ๋กœ ์•ž์— @objc dynamic๊ฐ€ ๋ถ™์€ NSObject Class๋กœ ์ƒ์„ฑํ•ด์ฃผ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๋จผ์ € Swift 4 ์ด์ „์—๋Š” ์–ด๋–ป.. 2020. 12. 29.
[Library] ReactiveX์— ๋Œ€ํ•ด ๊ฐ„๋‹จํ•˜๊ฒŒ ์•Œ์•„๋ณด๊ธฐ ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค. ์ €๋„ ์š”์ฆ˜์— RxSwift๋ฅผ ์‹œ์ž‘ํ•˜๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ์š”. RxSwift์—์„œ Rx๋ฅผ ํ‘œํ˜„ํ•˜๋Š” Reactive eXtension์— ๋Œ€ํ•ด์„œ ๋จผ์ € ๊ฐ„๋‹จํ•˜๊ฒŒ ์•Œ์•„๋ณด๋ฉด ์ข‹์„ ๊ฑฐ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์— ๊ณต๋ถ€ํ•œ ๊ฒƒ์„ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. Reactive X๋ž€? Microsoft์—์„œ "Volta" ๋ผ๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰์ค‘์— ๋งŒ๋“ค์–ด์ง„ API์ž…๋‹ˆ๋‹ค. Reactive X๋ฅผ ํ•œ๋งˆ๋””๋กœ ์ •์˜ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. "๊ด€์ฐฐ ๊ฐ€๋Šฅํ•œ ํ๋ฆ„์„ ์‚ฌ์šฉํ•˜๋Š” ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์œ„ํ•œ API" ๋˜ํ•œ ์˜ต์ €๋ฒ„ ํŒจํ„ด๊ณผ ๋ฐ˜๋ณต์ž ํŒจํ„ด์„ ํ•ฉ์ณ๋†“์€ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ํ”„๋ก ํŠธ์—”๋“œ ๋ฐฑ์—”๋“œ ์–ด๋””์—์„œ๋‚˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  JavaScript,Swift,Python ์–ด๋Š ํ”Œ๋žซํผ์ด๋“ ์ง€ ๊ต์ฐจ๊ฐ€ ์‰ฝ๊ฒŒ ์ด๋ฃจ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค๊ณ ํ•˜๋„ค์š”. ์žฅ์  4๊ฐ€์ง€๋กœ ๋งํ•  ์ˆ˜ ์žˆ์Šต.. 2020. 12. 24.
728x90
๋ฐ˜์‘ํ˜•