λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

🍎 iOS/Swift

(14)
[iOS]μ˜΅μ €λ²„ νŒ¨ν„΄ μ˜΅μ €λ²„ νŒ¨ν„΄μ΄λž€?Observer Pattern(μ˜΅μ €λ²„)μ΄λž€ κ΄€μ°° 쀑인 κ°μ²΄μ—μ„œ λ°œμƒν•˜λŠ” 이벀트λ₯Ό μ—¬λŸ¬ λ‹€λ₯Έ 객체에 μ•Œλ¦¬λŠ” λ©”μ»€λ‹ˆμ¦˜μ„ μ •μ˜ν•  수 μžˆλŠ” λ””μžμΈ νŒ¨ν„΄μž…λ‹ˆλ‹€. iOSμ—μ„œλŠ” Swift 5.1 버전뢀터 Combine ν”„λ ˆμž„μ›Œν¬μ— Publisherκ°€ μΆ”κ°€λ˜μ–΄ 이λ₯Ό μ‚¬μš©ν•  수 있고 NotificationCenter도 λΉ„μŠ·ν•˜κ²Œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.    Subject (Publisher)Observer듀을 가지고 있으며 κ°œμˆ˜λŠ” μ œν•œμ΄ μ—†μŠ΅λ‹ˆλ‹€.Observer듀을 μΆ”κ°€, μ œκ±°ν•˜λŠ” μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.Concrete Subject (Publisher)Concrete Observer 객체의 μƒνƒœλ₯Ό μ €μž₯ν•©λ‹ˆλ‹€.μƒνƒœκ°€ λ³€κ²½λ˜λ©΄ Observer(Subscriber)μ—κ²Œ μ•Œλ¦½λ‹ˆλ‹€.Observer (Subscrib..
[Swift] μŠ€μœ„ν”„νŠΈ 데이터 νƒ€μž…(Swift data type) - 2. μ»¬λ ‰μ…˜ νƒ€μž…(λ°°μ—΄(Array), λ”•μ…”λ„ˆλ¦¬(Dictionary), 집합(Set)) 1. Swift κΈ°λ³Έ 데이터 νƒ€μž… 1 - 1. κΈ°λ³Έ 데이터 νƒ€μž… (Bool, Int, UInt, Float, Double, Character, String) 1 - 2. Any, AnyObject, nil, Typealias [Swift] μŠ€μœ„ν”„νŠΈ 데이터 νƒ€μž…(Swift data type) - 1.κΈ°λ³Έ 데이터 νƒ€μž…, Any, AnyObject, nil, Typealias πŸ’‘ Swift 데이터 νƒ€μž… νŠΉμ§• - λͺ¨λ“  데이터 νƒ€μž…μ˜ 이름은 첫 κΈ€μžλ₯Ό λŒ€λ¬Έμžλ‘œ μž…λ ₯ν•œλ‹€. - λͺ¨λ“  데이터 νƒ€μž…(Int, Float, Double, Bool, String, Array, Dictionary, Set λ“±)은 λͺ¨λ‘ Struct (ꡬ쑰체)λ₯Ό κΈ°.. lxxyeon.tistory.com 2. μ»¬λ ‰μ…˜ νƒ€μž… (Array, Dicti..
[Swift] κ³ μ°¨ν•¨μˆ˜ - map, filter, reduce κ³ μ°¨ν•¨μˆ˜? ν•˜λ‚˜ μ΄μƒμ˜ ν•¨μˆ˜(ν΄λ‘œμ €)λ₯Ό 인자 둜 λ°›κ±°λ‚˜, ν•¨μˆ˜(ν΄λ‘œμ €)λ₯Ό λ°˜ν™˜ ν•˜λŠ” ν•¨μˆ˜λ‘œ λ°˜λ³΅λ¬Έμ„ μ‚¬μš©ν•˜μ—¬ κ΅¬ν˜„μ„ ν•  수 μžˆμ§€λ§Œ μƒμˆ˜λ₯Ό μ‚¬μš©ν•˜λ©΄ λ˜μ–΄μ„œ λ©”λͺ¨λ¦¬ μžμ›μΈ‘μ—μ„œ 더 효율적으둜 μ‚¬μš©ν•  수 μžˆλ‹€. λ˜ν•œ, 반볡문으둜 κ΅¬ν˜„ν•˜κ²Œ 되면 가독성이 떨어지고 λ³΅μž‘ν•΄μ§€κΈ° λ•Œλ¬Έμ—, 가독성을 올리고 νŽΈλ¦¬μ„±μ„ 높이기 μœ„ν•΄μ„œ μ‚¬μš©. κ·Έ 쀑, λ°°μ—΄ λ‹€λ£°λ•Œ κ°€μž₯ μ€‘μš”ν•œ μ„Έ 가지 map, filter, reduce에 λŒ€ν•΄ μ•Œμ•„λ³΄μž πŸ”₯ map : κΈ°μ‘΄ 데이터 λ³€ν˜•ν•˜μ—¬ μƒˆλ‘œμš΄ μ»¨ν…Œμ΄λ„ˆλ₯Ό λ§Œλ“€ λ•Œ μ‚¬μš© μ»¬λ ‰μ…˜ νƒ€μž…μ„ 순회(forλ¬Έ μ‚¬μš©)ν•  ν•„μš” 없이 κ°„λ‹¨ν•˜κ²Œ κ΅¬ν˜„ κ°€λŠ₯! // Declaration func map(transform: (T) -> U) -> Array [간단 μ‚¬μš©μ˜ˆμ œ] λ°°μ—΄ μ›μ†Œ 데이터 ν˜•λ³€ν™˜ν•˜κΈ° var strin..
[Swift] μ˜΅μ…”λ„(Optional) ? μ˜΅μ…”λ„ λ°”μΈλ”©ν•˜κΈ° + String λΉˆκ°’, μ˜΅μ…”λ„ ꡬ뢄 πŸ’‘ μŠ€μœ„ν”„νŠΈμ˜ νŠΉλ³„ν•œ κΈ°λŠ₯ κ°€μš΄λ° ν•˜λ‚˜μΈ μ˜΅μ…”λ„(Optional)에 λŒ€ν•΄ μ•Œμ•„λ³΄μž! [Contents] μ˜΅μ…”λ„ μ΄λž€? μ˜΅μ…”λ„ μΆ”μΆœ κ°•μ œ μΆ”μΆœ(Forced unwrapping) μ˜΅μ…”λ„ 바인딩(Optional Binding) 2.1. μ˜΅μ…”λ„ 바인딩 쀑첩 2.2. nil κ²°ν•© μ—°μ‚°μž μ•”μ‹œμ  μΆ”μΆœ μ˜΅μ…”λ„(Implicitly Unwrapped Optional) μ˜΅μ…”λ„ 체이닝(Optional Chaining) String λΉˆκ°’, μ˜΅μ…”λ„ ꡬ뢄 🍎 μ˜΅μ…”λ„(Optional) μ΄λž€? μΌμ’…μ˜ μ•ˆμ „ μž₯치둜 λ³€μˆ˜ μ•ˆμ— 값이 μžˆμ„ μˆ˜λ„, 없을 μˆ˜λ„(nil) μžˆλ‹€λŠ” 것을 μ˜΅μ…”λ„ λ³€μˆ˜ μ„ μ–Έ ? ν‚€μ›Œλ“œ μ‚¬μš©ν•˜μ—¬ ν‘œν˜„ν•œλ‹€. 즉, nil이 될 μˆ˜λ„ μžˆλŠ” μΈμŠ€ν„΄μŠ€λŠ” λ°˜λ“œμ‹œ μ˜΅μ…”λ„ νƒ€μž…μœΌλ‘œ μ„ μ–Έν•΄μ•Ό ν•œλ‹€. 즉, μ˜΅μ…”λ„λ‘œ μ„ μ–Έλœ λ³€μˆ˜μ—λ§Œ! n..
[Swift] ν•¨μˆ˜(Function) - κ³ κΈ‰ [Contents] ν•¨μˆ˜ Overloading 쀑첩 ν•¨μˆ˜ μ’…λ£Œλ˜μ§€ μ•ŠλŠ” ν•¨μˆ˜ (Nonreturning function) λ°˜ν™˜ 값을 λ¬΄μ‹œν•  수 μžˆλŠ” ν•¨μˆ˜ ( @discardableResult 속성 ) μ™€μΌλ“œμΉ΄λ“œ μ‹λ³„μž (Omitting Argumetn Labels) κ°€λ³€ λ§€κ°œλ³€μˆ˜ (Variadic Parameters) ν•¨μˆ˜ νƒ€μž… (Function Types) 🍎 ν•¨μˆ˜ Overloading λ¨Όμ € μ˜€λ²„λ‘œλ”©μ΄λž€ 같은 μ΄λ¦„μ˜ ν•¨μˆ˜λ₯Ό μ—¬λŸ¬ 개 μ •μ˜ν•˜κ³  λ§€κ°œλ³€μˆ˜λ₯Ό λ‹€λ₯΄κ²Œ ν•˜μ—¬ λ‹€μ–‘ν•œ μœ ν˜•μ˜ ν˜ΈμΆœμ— 응닡 κ°€λŠ₯ν•˜κ²Œ ν•œλ‹€. λ§€κ°œλ³€μˆ˜μ˜ νƒ€μž…μ΄ λ‹€λ₯΄κ±°λ‚˜ λ§€κ°œλ³€μˆ˜μ˜ κ°œμˆ˜κ°€ λ‹€λ₯΄λ‹€λ©΄ 이름이 같은 ν•¨μˆ˜λ₯Ό μ—¬λŸ¬ 개 λ§Œλ“€ 수 μžˆλ‹€. func hello(name: Int){ } func hello(name: String){ } func..
[Swift] ν•¨μˆ˜(Function) - κΈ°λ³Έ βœ”οΈ ν•¨μˆ˜μ˜ μ •μ˜ μ• ν”Œ κ°œλ°œλ¬Έμ„œμ— λ”°λ₯΄λ©΄ Swiftμ—μ„œ ν•¨μˆ˜λŠ” λ‹€μŒκ³Ό 같이 μ •μ˜λœλ‹€. [Definition] Functions are self-contained chunks of code that perform a specific task. You give a function a name that identifies what it does, and this name is used to “call” the function to perform its task when needed. ν•¨μˆ˜(Functions)λŠ” νŠΉμ • μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” 자체적으둜 ν¬ν•¨λœ(self-contained) μ½”λ“œ 덩어리(chunks) 이닀. ν•¨μˆ˜κ°€ 무엇을 ν•˜λŠ”μ§€ 식별가λŠ₯ν•œ 이름을 μ£Όκ³ , μ΄λŸ¬ν•œ 이름은 ν•„μš”ν• λ•Œ μž‘μ—…μ„ μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ 호좜(ca..
[Swift] μŠ€μœ„ν”„νŠΈ 반볡문(Loops, Repetitive Statement) μŠ€μœ„ν”„νŠΈ 반볡문(Loops, Repetitive Statement) forλ¬Έ whileλ¬Έ 🍎 forλ¬Έ 일정 횟수 λ™μ•ˆ λ°˜λ³΅ν•΄μ•Ό ν•˜λŠ” 경우 μ‚¬μš© λ²”μœ„ μ—°μ‚°μžλŠ” a...b λ˜λŠ” a.. 1 { integers.removeLast() print(integers) } [예문- while문으둜 1λΆ€ν„° 10κΉŒμ§€μ˜ 수λ₯Ό 좜λ ₯ν•˜κΈ°] var x = 1 while x 0
[Swift] μŠ€μœ„ν”„νŠΈ 쑰건문(Conditional Statements) μŠ€μœ„ν”„νŠΈ 쑰건문(Conditional Statements) ifλ¬Έ switchλ¬Έ 🍎 ifλ¬Έ if λ‹¨λ…μ μœΌλ‘œ μ‚¬μš©ν•΄λ„ 되고, else if, else와 μ‘°ν•©ν•΄μ„œ μ‚¬μš©. if λ’€μ˜ 쑰건 κ°’μ—λŠ” Bool νƒ€μž…μ˜ κ°’λ§Œ μœ„μΉ˜ν•΄μ•Ό ν•˜λ©°, 쑰건 값을 κ°μ‹ΈλŠ” μ†Œκ΄„ν˜ΈλŠ” 선택사항. [κΈ°λ³Έ ν˜•νƒœ] if 쑰건 { /* μ‹€ν–‰ ꡬ문 */ } else if 쑰건 { /* μ‹€ν–‰ ꡬ문 */ } else { /* μ‹€ν–‰ ꡬ문 */ } let myAge = 20 if myAge 50 { print("50 초과") } else {// 개발자의 μ˜λ„μ— 따라 else문도 μƒλž΅ κ°€λŠ₯ print("50") } μŠ€μœ„ν”„νŠΈμ˜ μ‘°κ±΄μ—λŠ” 항상 Bool νƒ€μž…μ΄ 듀어와야 ν•œλ‹€. μŠ€μœ„..

λ°˜μ‘ν˜•