IOS

ยท๐ŸŒฑ SeSAC
Notification.Name ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณต๋˜๋Š” Notification์ด ๋งŽ๋‹ค. awakeFromNib, init ํŠน์„ฑ์— ๋งž๊ฒŒ ์–ด๋Š ๊ฒƒ์ด ํ˜ธ์ถœ๋˜๋Š” ๊ฒƒ์ด ๋” ์ ์ ˆํ•œ์ง€ ํ™•์ธํ•ด๋ณธ๋‹ค. SB, CB ๋‘˜ ๋‹ค ํ˜ธ์ถœ์ด ๋˜๋Š”์ง€ ํ™•์ธํ•ด๋ณธ๋‹ค. ์–ด๋–ค ๊ฒƒ์ด ๋จผ์ € ํ˜ธ์ถœ๋˜๋Š”์ง€ ํ™•์ธํ•ด๋ณธ๋‹ค. (Break Point ํ™•์ธ) ํ™”๋ฉด์„ ๋„์šธ ๋•Œ viewDidLoad()์—์„œ Alert์„ ๋„์šธ ์ˆ˜ ์—†๋‹ค. (viewDidLoad๋Š” ํ™”๋ฉด์„ ๋„์šฐ๊ธฐ ์ง์ „์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋จ, viewDidAppear์—์„œ ํ˜ธ์ถœํ•˜๊ธฐ) ํ™”๋ฉด์„ ํ•ญ์ƒ ํ˜„์žฌ ํ™”๋ฉด์—์„œ present, push ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ํ˜„์žฌ window์˜ rootViewController์—์„œ ๋„์šฐ๋Š” ๊ฒฝ์šฐ๋„ ๋งŽ๋‹ค. SnapKit Layout Method make remake update ์…€ ๋ ˆ์ด์•„์›ƒ(C..
ยท๐ŸŒฑ SeSAC
๋“ค์–ด๊ฐ€๋ฉฐ ์ง€๋‚œ์ฃผ์—๋Š” Realm์„ ์ด์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ณต๋ถ€ํ–ˆ๊ณ , ๊ทธ๊ฒƒ์„ ์ด์šฉํ•ด์„œ ๋‹ค์ด์–ด๋ฆฌ ์•ฑ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ํ–ˆ๋‹ค. ๋ฐ”๋กœ ์ด์ „ ๊ธ€์—์„œ๋Š” ์‚ฌ์ง„ ๊ฒ€์ƒ‰ ๋ทฐ๋ฅผ ๋งŒ๋“  ๊ฒƒ๊นŒ์ง€ ๋ณด์—ฌ์คฌ๋˜ ๊ฒƒ ๊ฐ™์€๋ฐ, ์ง€๊ธˆ ์‹œ์ ์—์„œ๋Š” ์–ด๋Š ์ •๋„ ๋ ˆ์ด์•„์›ƒ์ด ์ž๋ฆฌ๋ฅผ ์žก์•˜๋‹ค. ์–ด๋–ค ์ž‘์—…์„ ํ–ˆ๋Š”์ง€ ๊ฐ„๋‹จํžˆ ์š”์•ฝ๋งŒ ํ•ด๋ณด๊ฒ ๋‹ค. ๊ฐ„๋‹จํžˆ ๊ตฌํ˜„ํ•œ ๋‚ด์šฉ ๊ธฐ๋ก์„ ํ•˜๊ณ  ๋‚˜๋ฉด ๊ธฐ๋ก์„ ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ๋กœ ๋ณด์—ฌ์ฃผ๊ฒŒ ๋˜๋Š”๋ฐ ์ฒ˜์Œ์— ํ–ˆ๋˜ ์…€ ๋””์ž์ธ์ด ํ•ด๋†“๊ณ  ๋ณด๋‹ˆ๊นŒ ๋„ˆ๋ฌด ๋ณ„๋กœ์—ฌ์„œ ๋ฐ”๊ฟจ๋‹ค. ์‹ฌํ”Œํ•œ๊ฒŒ ์ตœ๊ณ ์ธ ๊ฒƒ ๊ฐ™๋‹ค. ๐Ÿ—ฃ Realm์„ ์ด์šฉํ•ด์„œ CRUD ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด๋ณด์•˜๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ๊ฐ€์žฅ ํฌ๊ฒŒ ๋Š๊ผˆ๋˜ ๊ฒƒ์€ ๋™๊ธฐํ™”, ๊ฐฑ์‹ ์„ ์ž˜ ์‹œ์ผœ์ฃผ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด์—ˆ๋‹ค. ๋™๊ธฐํ™”๊ฐ€ ์ž˜ ๋˜์ง€ ์•Š์œผ๋ฉด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋‹ˆ ์ฃผ์˜ํ•˜์ž. ๐Ÿ—ฃ Repository Pattern์„ ์ด์šฉํ•ด..
ยท๐ŸŽ iOS & Swift
๋“ค์–ด๊ฐ€๋ฉฐ ์‚ฌ์‹ค ๋˜‘๋˜‘ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฑด์ง€ ์•„๋‹Œ์ง€ ํ™•์ธ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ๋ชจ์ˆœ์ด ์žˆ์ง€๋งŒ, ๊ทธ๋ž˜๋„ ๋‚˜๋ฆ„ ์ฝ”๋“œ ๊ฐœ์„ ์„ ํ•ด๋ณด๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ์œผ๋‹ˆ ๊ธฐ๋ก์„ ๋‚จ๊ฒจ๋ณด๊ฒ ๋‹ค.... (๊ณ ๋ฏผ์˜ ํ”์ )... Realm์„ ์‚ฌ์šฉํ•˜๋‹ค๋ณด๋ฉด ์‚ฌ์šฉ๋˜๋Š” ์ฝ”๋“œ๊ฐ€ ํ•œ์ •์ ์ด๊ณ  ๊ฑฐ์˜ ์œ ์‚ฌํ•˜๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ํ•œ ๊ณณ์— ๋ชจ์•„์„œ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค๊ณ  ์ƒ๊ฐํ•ด์„œ Manager ํŒŒ์ผ์„ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค. ์ž˜ ๋งŒ๋“  ๊ฑด์ง€๋Š” ๋ชจ๋ฅด๊ฒ ๋‹ค. ๊ทธ๋ž˜๋„ ํ™•์‹คํžˆ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๊ธฐ๋Š” ํŽธํ•ด์กŒ๋‹ค๋Š” ๊ฒƒ์„ ๋Š๊ผˆ๋‹ค. ๋ฐ”๋กœ ํ•œ ๋ฒˆ ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด์ž! ์ฝ”๋“œ ์‚ดํŽด๋ณด๊ธฐ 1. ๊ตฌํ˜„๋ถ€ // ๊ตฌํ˜„๋ถ€ import UIKit import RealmSwift protocol DataBase { func read(_ object: T.Type) -> Results func write(_ object: ..
ยท๐ŸŽ iOS & Swift
์…€์„ ๋ณด๋ฉด ํฐ์ƒ‰ ์ ์„ ์ด ๋ณด์ผ ๊ฒƒ์ด๋‹ค. ์…€ ์•ˆ์— ์ ์„ ์„ ๊ทธ๋ ค์„œ ๋„ฃ์–ด์ฃผ๊ณ  ์‹ถ์–ด ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์ฐพ์•„๋ดค๋Š”๋ฐ ์žˆ๋”๋ผ.. ๊ทธ๋ž˜์„œ ์•ผ๋ฌด์ง€๊ฒŒ ์ด์šฉํ•ด์ฃผ์—ˆ๋‹ค. ํŠน๋ณ„ํ•œ ๋‚ด์šฉ์€ ์—†๋‹ค. ๋ฌธ์„œ์— ์˜ˆ์ œ ์ฝ”๋“œ๊ฐ€ ์ž˜ ๋‚˜์™€์žˆ์–ด์„œ ๊ฐ€์ ธ๋‹ค๊ฐ€ ์ ์ ˆํ•˜๊ฒŒ ์‚ฌ์šฉํ•ด์ฃผ๋ฉด ๋œ๋‹ค. ํ•œ ๊ฐ€์ง€ ํฌ์ธํŠธ๋Š” ๊ณ„์ธต ๊ตฌ์กฐ๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. Core Animation > CAShapeLayer > lineDashPattern CAShapeLayer ์•„๋ž˜์— ์žˆ๋Š” ์ธ์Šคํ„ด์Šค ํ”„๋กœํผํ‹ฐ์ด๋‹ค. CAShapeLayer ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค๊ณ  lineDashPattern์— ์ˆซ์ž ๋ฐฐ์—ด์„ ๋Œ€์ž…ํ•ด์ฃผ๋ฉด ์ž…๋ง›์— ๋งž๊ฒŒ ์ ์„ ์„ ๊ทธ๋ ค์ค„ ์ˆ˜ ์žˆ๋‹ค. ๊ธฐ๋ณธ์€ nil์ด๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ฐ˜์ ์œผ๋กœ๋Š” ์‹ค์„ ์œผ๋กœ ๋ณด์ธ๋‹ค. ์ ์ ˆํ•˜๊ฒŒ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค์—ˆ์œผ๋ฉด ์šฐ๋ฆฌ๊ฐ€ ๊ทธ๋ฆฌ๋ ค๋Š” view์˜ ํ•˜์œ„ ๋ทฐ๋กœ ๋„ฃ์–ด์ฃผ๋ฉด ์™„์„ฑ์ด๋‹ค. dash..
ยท๐ŸŒฑ SeSAC
๋“ค์–ด๊ฐ€๋ฉฐ ๋‹ค์ด์–ด๋ฆฌ ์•ฑ์„ ๋งŒ๋“ค๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. ๋งค๋ฒˆ TIL๋งŒ ์ ์—ˆ์—ˆ๋Š”๋ฐ ๊ฐœ๋ฐœ์ด๋ž‘ ๊ธฐ๋ก์„ ๋„ˆ๋ฌด ์†Œํ™€ํžˆ ํ–ˆ๋˜ ๊ฒƒ ๊ฐ™์•„์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ฐœ๋ฐœํ–ˆ๋˜ ์ƒํ™ฉ์ด๋‚˜ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…, ๊ธฐํƒ€ ๋“ฑ๋“ฑ์„ ๊ฐ€๋ณ๊ฒŒ ๊ธฐ๋กํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ์ผ๋‹จ ์ง€๊ธˆ์€ ๋„ˆ๋ฌด ์กธ๋ฆฌ๋‹ˆ๊นŒ ์˜ค๋Š˜ ์ž‘์—…ํ•œ ๋‚ด์šฉ์„ ๊ฐ„๋‹จํ•˜๊ฒŒ๋งŒ ๊ธฐ๋กํ•˜๋„๋ก ํ•˜๊ฒ ๋‹ค... (์›๋ž˜ ๋ฏธ๋ฆฌ ํ–ˆ์—ˆ์–ด์•ผ ํ–ˆ๋Š”๋ฐ ๋ฐ˜์„ฑ ์ค‘๐Ÿ˜ต) ์ด๋ฒˆ์ฃผ๋Š” Realm Local Database๋ฅผ ์ด์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ, ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•˜๊ณ  ์žˆ๋‹ค. ๊ทธ๊ฒƒ์„ ์ด์šฉํ•ด์„œ ๊ฐ„๋‹จํ•œ ์ผ๊ธฐ, ๋ฉ”๋ชจ, ๊ธฐ๋ก ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์„ํ…๋ฐ ์ง€๊ธˆ์€ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ฏธ๋‹ˆ ํ”„๋กœ์ ํŠธ๋กœ ์ผ๊ธฐ(๋‹ค์ด์–ด๋ฆฌ)์•ฑ์„ ๋งŒ๋“œ๋Š” ์ค‘์ด๋‹ค. ์š•์‹ฌ์ด ์•ฝ๊ฐ„ ๋‚˜์„œ ๋””์ž์ธ๋„ ์‹ ๊ฒฝ์จ๋ณด๋ ค๊ณ  ํ•˜๋Š”๋ฐ ์—ญ์‹œ๋‚˜ ์‹œ๊ฐ„์ด ์ข€ ๊ฑธ๋ฆฐ๋‹ค... ์ผ๋‹จ ๊ธฐ๋Šฅ ๊ตฌํ˜„์ด ๋” ์ค‘์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— UI๋Š” ๊ทธ ์ดํ›„์— ์‹ ๊ฒฝ์จ๋ณด๋„๋ก ํ•˜..
ยท๐ŸŽ iOS & Swift
์š”์ƒˆ ๋‹ค์‹œ ์ฝ”๋“œ ๋ฒ ์ด์Šค๋กœ UI๋ฅผ ์งœ๊ณ , ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๊ณ  ์žˆ๋‹ค. ์†ํŠธ ์„ธ๋ฏธ๋‚˜ ํ•  ๋•Œ ์Šคํ† ๋ฆฌ๋ณด๋“œ๋ฅผ ๋„ˆ๋ฌด ๋งŽ์ด ๋ดค๋Š”์ง€ ์ž ์‹œ ๋ฉ€๋ฆฌ ํ•  ๋•Œ๊ฐ€ ๋œ ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์„ ์Šค์Šค๋กœ ํ–ˆ๋‹ค... ์ถฉ๋ถ„ํžˆ ๋งŽ์ด ๋ดค์–ด...๐Ÿ‘‹ ์‚ฌ์‹ค ์ฝ”๋“œ ๋ฒ ์ด์Šค๋กœ UI๋ฅผ ์งค ๋•Œ ํ•ญ์ƒ ๊ณ ๋ฏผ์„ ํ–ˆ๋˜ ๋ถ€๋ถ„์€ ์ฝ”๋“œ๊ฐ€ ๋„ˆ๋ฌด ๊ธธ์–ด์ง€๊ณ  ๊ฐ€๋…์„ฑ์ด ์ข‹์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์ด์—ˆ๋‹ค. ์ƒˆ์‹น ๊ณผ์ œ์ธ Diary ์•ฑ์„ ๋งŒ๋“ค๋ฉด์„œ ๋ฌธ๋“ ๋˜ ์ƒ๊ฐ์ด ๋“ค์–ด์„œ ์Šคํƒ€์ผ์„ ์ข€ ๋ฐ”๊พธ๋ ค๊ณ  ์‹œ๋„ํ•ด๋ณด์•˜๋‹ค. Then (Syntax Sugar Library)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฐ€์ • ํ•˜์— UI ์งœ๋Š” ์Šคํƒ€์ผ์„ ํ•œ ๋ฒˆ ์‚ดํŽด๋ณด์ž. 1. ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ์‹œ์— ํด๋กœ์ €๋กœ ์†์„ฑ๊นŒ์ง€ ์ง€์ •ํ•ด์ฃผ๋Š” ๋ฐฉ๋ฒ• UI ๊ฐ์ฒด๊ฐ€ ๋ช‡ ๊ฐœ ์—†๋‹ค๋ฉด ์˜คํžˆ๋ ค ๊น”๋”ํ•˜๊ณ  ๊ฐ€๋…์„ฑ๋„ ์ข‹์€ ๊ฒƒ ๊ฐ™๋‹ค. let blackView = UIView().then { $0.ba..
ยท๐ŸŽ iOS & Swift
๋ชจ๋“ˆ์„ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉํ•˜๋‹ค๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ๋งŒ๋‚ฌ๋‹ค. overriding non-open instance method outside of its defining module import UIKit open class BaseView: UIView { public override init(frame: CGRect) { super.init(frame: frame) configureAttributes() configureLayout() } @available(*, unavailable) public required init?(coder: NSCoder) { super.init(coder: coder) } public func configureAttributes() {} public func confi..
ยท๐ŸŽ iOS & Swift
๋“ค์–ด๊ฐ€๋ฉฐ Notification์€ ๊ฐ’, ๋ฐ์ดํ„ฐ ์ „๋‹ฌํ•  ๋•Œ ์ •๋ง ์œ ์šฉํ•œ ๋…€์„์ด๋‹ค. ์–ด๋–ป๊ฒŒ ๋ณด๋ฉด ์‚ฌ์šฉ ๋ฐฉ๋ฒ•๋„ ๋˜๊ฒŒ ๋‹จ์ˆœํ•œ๋ฐ ์จ์•ผ ํ•  ์ฝ”๋“œ๊ฐ€ ๊ณณ๊ณณ์— ํผ์ ธ์žˆ๊ณ , ๋งŽ์ด ์“ฐ๋‹ค๋ณด๋ฉด ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ค์›Œ์ง„๋‹ค. ์ ์ ˆํ•  ๋•Œ ์“ฐ๋ฉด ์ฐธ ์ข‹์€ ์นœ๊ตฌ... (ํŠนํžˆ ๊ณ„์ธต์ด ๋ณต์žกํ•  ๋•Œ ์“ฐ๋ฉด ๊ฟ€์ด๋‹ค ๐Ÿฏ) ์˜ค๋Š˜ ๊ทธ๋ž˜์„œ ๋‹จ์ˆœํ•˜๊ฒŒ ์žฅ์  ์„ค๋ช…ํ•˜๋ ค๊ณ  ๊ธ€์„ ์“ฐ๊ฒŒ ๋œ ๊ฒƒ์€ ์•„๋‹ˆ๊ณ , ๋ถˆํŽธํ–ˆ๋˜ ์ ์„ ๊ฐœ์„ ํ•ด ๋ณธ ๊ฒƒ์„ ๊ธฐ๋กํ•˜๊ณ ์ž ํ•œ๋‹ค. (์•„ ๊ทธ๋ฆฌ๊ณ  ๊ธ€ ์“ฐ๋‹ค ๋ณด๋ฉด ๋งํˆฌ๊ฐ€ ์ •๋ง ์˜ค๋ฝ๊ฐ€๋ฝ ํ•œ๋ฐ ์ดํ•ดํ•ด์ฃผ์‹œ๊ธธ ... ๊ธ€ ์ข€ ๋” ์จ๋ณด๊ณ  ํ•œ ๊ฐ€์ง€๋กœ ์ •์ฐฉํ•ด์•ผ๊ฒ ๋‹ค.) ๋ถˆํŽธํ–ˆ๋˜ ์  ๋ถˆํŽธํ–ˆ๋˜ ์ ์€ Notification.Name ์•ˆ์— ๋“ค์–ด๊ฐ€๋Š” ๋ฌธ์ž์—ด์„ post ํ•˜๋Š” ์ชฝ๊ณผ addObserving ํ•˜๋Š” ์ชฝ์„ ์ •ํ™•ํžˆ ๋งž์ถฐ์ฃผ์–ด์•ผ ํ•œ๋‹ค๋Š” ์ ์ด๋‹ค. ํœด๋จผ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๊ณ , ์ฝ”๋“œ๊ฐ€ ๊ณณ..
taeeekki
'IOS' ํƒœ๊ทธ์˜ ๊ธ€ ๋ชฉ๋ก (4 Page)