์ „์ฒด ๊ธ€ 19

[iOS / Uikit] ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ์„ ํ•ด๋ณด์ž! (MoyaํŽธ)

iOS ํ”„๋กœ์ ํŠธ์—์„œ ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์„ ๋” ํŽธํ•˜๊ฒŒ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” Moya ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ! ํ•ด๋‹น ๊ธ€์€ ํ•จ๊ป˜ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ํŒ€์›๋“ค์„ ์œ„ํ•ด ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค โœŒ๏ธMoya๊ฐ€ ๋ชจ์•ผ? ๐Ÿคท‍โ™€๏ธ๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ… URLSession์„ ๋” ๊น”๋”ํ•˜๊ณ  ๊ตฌ์กฐ์ ์œผ๋กœ ์“ฐ๊ฒŒ ํ•ด์ฃผ๋Š” ๋„คํŠธ์›Œํฌ ์ถ”์ƒํ™” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ˆ์š”! ์š”์ฒญ ๋งŒ๋“ค๊ธฐ / ์‘๋‹ต ์ฒ˜๋ฆฌ / ์—๋Ÿฌ ํ•ธ๋“ค๋ง / ๋กœ๊ทธ ์ถœ๋ ฅ ๊ฐ™์€ ๊ฒƒ๋“ค์„ ๋ณด๊ธฐ ์ข‹๊ณ  ์ผ๊ด€์„ฑ ์žˆ๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด์š”. ๊ทธ๋Ÿผ ์ด์ œ๋ถ€ํ„ฐ ๋„คํŠธ์›Œํฌ ์„ธํŒ… ๊ตฌ์กฐ๋ฅผ ํ•˜๋‚˜์”ฉ ์‚ดํŽด๋ณผ๊นŒ์œ ? ๐Ÿ‘‡๐Ÿ“Œ 1. BaseTargetType — ๊ณตํ†ต ์„ค์ • ๋ชจ์•„๋‘๊ธฐ//// BaseTargetType.swift//import Foundationimport Moyaprotocol BaseTargetType: TargetType { }extension B..

[iOS / Uikit] ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋ž ๊ตฌํ˜„ํ•˜๊ธฐ :interactiveMovement

์ตœ๊ทผ์— ๋ฉœ๋ก ๋ฎค์ง ํด๋ก ์ฝ”๋”ฉ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜์˜€๋Š”๋ฐ์š”!ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์ปฌ๋ ‰์…˜๋ทฐ์—์„œ ์…€ ์ „์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ ์…€ ๋‚ด๋ถ€์˜ ํŠน์ • ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ๋งŒ ๋“œ๋ž˜๊ทธ์•ค๋“œ๋ž์ด ๋™์ž‘ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. UIKit์—์„œ Drag & Drop์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ์–ด์š”.1. UICollectionViewDragDelegate์™€ UICollectionViewDropDelegate๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹2. LongPress ์ œ์Šค์ฒ˜๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ์‹๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์ด ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅธ์ง€ ๊ฐ„๋‹จํžˆ ์ •๋ฆฌํ•ด๋ณผ๊นŒ์š”?1) UICollectionViewDragDelegate · UICollectionViewDropDelegate ์‚ฌ์šฉUIKit์—์„œ ๊ณต์‹์ ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” Drag & Drop ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.iOS 11 ์ดํ›„๋กœ ๋„์ž…๋œ ์‹œ์Šคํ…œ ์ธํ„ฐ๋ž™์…˜์ด๋ผ ๊ธฐ๋ณธ ์ œ์Šค์ฒ˜์™€ ..

[iOS / Swift] Codable & CodingKeys

๐ŸŽ Codable์ด๋ž€?Swift์—์„œ ์„œ๋ฒ„์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ๋•Œ, ์„œ๋ฒ„์˜ JSON ๋ฐ์ดํ„ฐ๋ฅผ ์šฐ๋ฆฌ ์•ฑ์˜ ๊ตฌ์กฐ์ฒด๋‚˜ ํด๋ž˜์Šค ํ˜•ํƒœ๋กœ ๋ฐ”๊ฟ”์•ผ ํ•  ๋•Œ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.์ด๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ Codable์ž…๋‹ˆ๋‹ค! ๊ณต์‹ ๋ฌธ์„œ์— ๋”ฐ๋ฅด๋ฉด Codable์€ ์ž์‹ ์„ ์™ธ๋ถ€ ํ‘œํ˜„์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ฑฐ๋‚˜(Encode),์™ธ๋ถ€ ํ‘œํ˜„์œผ๋กœ๋ถ€ํ„ฐ ์ž์‹ ์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋Š”(Decode) ํƒ€์ž…์ด์—์š”.์ฆ‰, Swift์˜ ๊ฐ์ฒด๋ฅผ JSON์œผ๋กœ ๋ฐ”๊พธ๊ฑฐ๋‚˜, JSON์„ Swift ๊ฐ์ฒด๋กœ ๋ฐ”๊พธ๋Š” ์—ญํ• ์„ ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ธ๊ฑฐ์ฃ . Codable์€ ์‚ฌ์‹ค ๋‘ ๊ฐœ์˜ ํ”„๋กœํ† ์ฝœ์ด ํ•ฉ์ณ์ง„ ํ˜•ํƒœ์ธ๋ฐ์š” !ํ”„๋กœํ† ์ฝœ์—ญํ• Encodable์ž์‹ ์„ JSON ๊ฐ™์€ ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ๋กœ ์ธ์ฝ”๋”ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.Decodable์™ธ๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ž์‹ ์œผ๋กœ ๋””์ฝ”๋”ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.CodableEncodable + Decod..

[iOS / Swift] ํ…Œ์ด๋ธ”๋ทฐ์™€ ์ปฌ๋ ‰์…˜๋ทฐ์˜ ๊ฐฑ์‹  ๋ฉ”์„œ๋“œ

iOS์—์„œ ํ”ผ๋“œ์ฒ˜๋Ÿผ ์Šคํฌ๋กค ๊ฐ€๋Šฅํ•œ ๋ฆฌ์ŠคํŠธ ํ™”๋ฉด์„ ๋งŒ๋“ค ๋•Œ๋Š” ๋ณดํ†ต UITableView๋‚˜ UICollectionView๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.์ด ๋‘ ๋ทฐ๋Š” ํ•œ ๋ฒˆ ํ‘œ์‹œ๋œ ํ™”๋ฉด์„ ์ž๋™์œผ๋กœ ๊ฐฑ์‹ ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ”๋€Œ๋ฉด ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ๊ฐฑ์‹  ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€ํ‘œ์ ์ธ ๊ฐฑ์‹  ๋ฉ”์„œ๋“œ๋Š” ์ด ๋„ค ๊ฐ€์ง€์ธ๋ฐ์š”. ์ฐจ๋ก€๋Œ€๋กœ ํ•˜๋‚˜์”ฉ ์‚ดํŽด๋ด…์‹œ๋‹ค! ๐ŸŽ reloadData()reloadData()๋Š” UITableView๋‚˜ UICollectionView์—์„œ ํ˜„์žฌ ํ‘œ์‹œ ์ค‘์ธ ๋ชจ๋“  ์…€๊ณผ ์„น์…˜์„ ์™„์ „ํžˆ ๋‹ค์‹œ ๊ทธ๋ฆฌ๋Š” ๋ฉ”์„œ๋“œ์ž…๋‹ˆ๋‹ค. ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์‚ดํŽด๋ณด๋ฉด…“Call this method when the data in your data-source object changes or when you want to force the colle..

[iOS / Swift] Equatable, Hashable, Comparable

Swift์—๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ํ”„๋กœํ† ์ฝœ์ด ์กด์žฌํ•˜์ฃ ! ๊ทธ์ค‘์—์„œ๋„ Equatable, Comparable, Hashable์€ ๊ฐ€์žฅ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋ณธ ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค.๋ชจ๋ธ ๋น„๊ต, ์ •๋ ฌ, ์ค‘๋ณต ์ œ๊ฑฐ ๋“ฑ ์‹ค๋ฌด์—์„œ๋„ ์ž์ฃผ ๋“ฑ์žฅํ•˜๋Š” ์ค‘์š”ํ•œ ๊ฐœ๋…์ธ๋ฐ์š”. ๊ทธ๋Ÿผ ์ฐจ๊ทผ์ฐจ๊ทผ ํ•˜๋‚˜์”ฉ ์•Œ์•„๋ด…์‹œ๋‹ค!๐ŸŽ EquatableEquatable์€ ๋‘ ๊ฐ’์ด ๊ฐ™์€์ง€ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋Š” ํƒ€์ž…์„ ์ •์˜ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค.๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์‚ดํŽด๋ณด๋ฉด…“Values of types that conform to Equatable can be checked for equality using the == operator.” ์ฆ‰, Equatable์„ ์ฑ„ํƒํ•˜๋ฉด == ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด ๋‘ ์ธ์Šคํ„ด์Šค๊ฐ€ ๊ฐ™์€์ง€ ๋น„๊ตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Equatable์˜ ํŠน์ง•== ์™€ != ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•  ..

๋ฐ˜์‘ํ˜•