전체 κΈ€

전체 κΈ€

    Swift5.1 뢈투λͺ… νƒ€μž… (Opaque type) some Type SE-0244

    μ•ˆλ…•ν•˜μ„Έμš”~! μ˜€λŠ˜μ€ Swift5.1μ—μ„œ μ†Œκ°œλœ 뢈투λͺ… νƒ€μž… Opaque type에 λŒ€ν•΄μ„œ μ†Œκ°œν•΄ λ“œλ¦¬λ €κ³  ν•©λ‹ˆλ‹€~! λͺ…ν™•ν•œ λ°˜ν™˜ νƒ€μž…μ„ 외뢀에 μ œκ³΅ν•˜λŠ” λŒ€μ‹ , Opaque λ°˜ν™˜(return) νƒ€μž…μ„ 가진 ν•¨μˆ˜, λ©”μ„œλ“œλŠ” μžμ‹ μ˜ λ°˜ν™˜νƒ€μž… 정보λ₯Ό 외뢀에 숨길 수 μžˆμŠ΅λ‹ˆλ‹€. Return νƒ€μž…μ„ μˆ¨κΈ°λŠ” 것은 λͺ¨λ“ˆλ‘œ ν˜ΈμΆœλ˜λŠ” μ½”λ“œμ™€ λͺ¨λ“ˆ μ‚¬μ΄μ—μ„œ μœ μš©ν•˜κ²Œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ œλ„€λ¦­(κ΅¬ν˜„λΆ€ 좔상화), ν˜ΈμΆœν•˜λŠ” κ³³μ—μ„œλŠ” ꡬ체적인 νƒ€μž…(예 : )을 μ•„λŠ” μƒνƒœμ—μ„œ μ‚¬μš©ν–ˆλ‹€λ©΄, Opaque type은 λ°˜λŒ€λ‘œ κ΅¬ν˜„λΆ€λŠ” ꡬ체적인 νƒ€μž…μ„ μ•Œκ³  μžˆμ§€λ§Œ, ν˜ΈμΆœν•˜λŠ” κ³³μ—μ„œλŠ” νŠΉμ • ν”„λ‘œν† μ½œλ§Œ μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€. - Generic - κ΅¬ν˜„λΆ€ - μΆ”μƒν™”ν•˜μ—¬ μž‘μ„± ν˜ΈμΆœλΆ€ - ꡬ체적인 νƒ€μž… 지정 (νƒ€μž…μ„ μ•Œ 수 있음) - Opaque Ty..

    Swift5.1 ꡬ쑰체 멀버별 μ΄λ‹ˆμ…œλΌμ΄μ €(Memberwise Initializer)의 κΈ°λ³Έκ°’ ν•©μ„± SE-0242

    μ•ˆλ…•ν•˜μ„Έμš”~! μ˜€λŠ˜μ€ Swift5.1μ—μ„œ μƒˆλ‘­κ²Œ λ³€κ²½λœ 사항듀을 정리해보렀고 ν•˜λŠ”λ°μš” 첫 번째둜 λ©€λ²„μ…œ μ΄ˆκΈ°ν™”(memberwise initializer)μ‹œ κΈ°λ³Έκ°’ 합성에 λŒ€ν•΄μ„œ μ•Œμ•„λ³΄λ €κ³  ν•©λ‹ˆλ‹€. μ–΄λ–»κ²Œ λ‹¬λΌμ‘ŒλŠ”λ° ν•¨κ»˜ μ•Œμ•„λ³΄μ‹œμ£ ~! 기본적인 ꡬ쑰체 강아지λ₯Ό λ§Œλ“€μ—ˆμŠ΅λ‹ˆλ‹€. struct Dog { var age: Int var name: String } μ»΄νŒŒμΌλŸ¬μ—μ„œλŠ” μ•„λž˜μ™€ 같이 μ΄ˆκΈ°ν™”λ₯Ό ν•©μ„±ν•©λ‹ˆλ‹€. init(age: Int, name: String) 그런데 λ§Œμ•½ λͺ¨λ“  κ°•μ•„μ§€μ˜ λ‚˜μ΄μ— 0으둜 μ΄ˆκΈ°κ°’μ„ κ°–λŠ”λ‹€κ³  κ°€μ • ν•˜κ³  μΈμŠ€ν„΄μŠ€λ₯Ό 생성 ν–ˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ μΈμŠ€ν„΄μŠ€ μƒμ„±μ‹œ Swift μ»΄νŒŒμΌλŸ¬κ°€ 초기 값이 μžˆλŠ” 속성에 λŒ€ν•œ 기본값을 생성할 수 μ—†κΈ° λ•Œλ¬Έμ— μ—λŸ¬κ°€ λ°œμƒν•©λ‹ˆλ‹€. struct Dog { var age..

    Swift5.0 SE-0225 배수 κ΅¬ν•˜κΈ° isMultiple(of:)

    μ•ˆλ…•ν•˜μ„Έμš”~! μ˜€λŠ˜μ€ isMultiple(of:)에 λŒ€ν•΄μ„œ μ†Œκ°œν•΄ λ“œλ¦¬κ² μŠ΅λ‹ˆλ‹€. isMultiple(of:)λŠ” λ°°μˆ˜μΈμ§€ νŒλ‹¨ν•˜λŠ” λ©”μ„œλ“œμž…λ‹ˆλ‹€. μ—¬κΈ°μ„œ λ°°μˆ˜λŠ” μ–΄λ–€ μ •μˆ˜μ™€ λ‹€λ₯Έ μ •μˆ˜λ₯Ό κ³±ν–ˆμ„ λ•Œ λ‚˜μ˜€λŠ” μˆ˜μž…λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ 6 = 2 * 3μ΄λ―€λ‘œ 6은 3의 λ°°μˆ˜μž…λ‹ˆλ‹€. μ•„λž˜ μ½”λ“œ 처럼 μ΄μ „μ—λŠ” % μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•΄μ„œ 배수λ₯Ό νŒλ‹¨ν•˜λŠ” μ½”λ“œλ₯Ό μž‘μ„±ν–ˆμ—ˆμ£  κ·Έλ ‡λ‹€λ©΄ isMultiple(of:)와 μ–΄λ–€ 문제λ₯Ό ν•΄κ²° ν•  수 있길래 μ• ν”Œμ—μ„œ κ³΅μ‹μ μœΌλ‘œ μ œκ³΅ν•˜κ³  μžˆμ„κΉŒμš”? let number = 6 if number % 3 == 0 { print("6은 3의배수") } 첫 번째둜, 0으둜 λ‚˜λˆ„λŠ” 상황을 λ³Ό 수 μžˆλŠ”λ°μš”. number % 0 == 0 은 무쑰건 μ°Έ μž…λ‹ˆλ‹€. number.isMultiple(of: 0)은 nu..

    Swift5.0 μ€‘μ²©λœ Optionals(??) 평면화 ν•˜κΈ° SE-0230

    μ•ˆλ…•ν•˜μ„Έμš”~! 졜근 λ²„μ „μ—μ„œλŠ” λ‚˜νƒ€λ‚˜μ§€ μ•Šμ§€λ§Œ Swift4.2 μ΄ν•˜ μŠ€μœ„ν”„νŠΈ λ²„μ „μ—μ„œλŠ” μ–Έλž˜ν•‘ μž‘μ—…μ΄λ‚˜ try?둜 μ˜΅μ…”λ„ 값을 κ°€μ Έμ˜¬λ•Œ μ€‘μ²©λœ ????을 λ³Ό 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ Swift5.0λΆ€ν„°λŠ” κ·Έλ ‡κ²Œ μ²˜λ¦¬λ˜μ§€ μ•ŠλŠ”λ°μš” μ•„λž˜ μ˜ˆμ œμ½”λ“œλ₯Ό ν•¨κ»˜ λ³΄μ‹œλ©΄μ„œ μ–΄λ–»κ²Œ λ‹¬λΌμ‘ŒλŠ”μ§€ λ³΄κ² μŠ΅λ‹ˆλ‹€. struct User { var id: Int init?(id: Int) { if id String { // complicated code here return "No messages" } } User ꡬ쑰체 μ•ˆμ— μ˜΅μ…”λ„ μ΄ˆκΈ°ν™”κ°€ μžˆμŠ΅λ‹ˆλ‹€. 쑰건에 λ§žλŠ” 아이디가 λ“€μ–΄μ™€μ•Όλ§Œ μœ μ €κ°€ μƒμ„±λ˜λ„λ‘ ν•˜κΈ° μœ„ν•¨ μž…λ‹ˆλ‹€. ..

    UITextField returnν‚€(ν‚€λ³΄λ“œ ν•˜λ‹¨ 였λ₯Έμͺ½ νŒŒλž€μƒ‰λ²„νŠΌ) λˆŒλ €μ„ λ•Œ 이벀트λ₯Ό λ°›μ•„λ³΄μž func textFieldShouldReturn

    μ•ˆλ…•ν•˜μ„Έμš”~! μ˜€λŠ˜μ€ UITextField Delegate λ©”μ†Œλ“œμ€‘ ν•˜λ‚˜μΈ func textFieldShouldReturn(_ textField: UITextField) -> Bool 에 λŒ€ν•΄μ„œ μ•Œμ•„ λ³΄κ² μŠ΅λ‹ˆλ‹€. ν‚€λ³΄λ“œκ°€ λ‚˜μ˜€λŠ” λ§Žμ€ κ³³μ—μ„œ return(μ—”ν„°ν‚€)ν‚€λ₯Ό λˆ„λ₯Έ ν›„ 이후 λ™μž‘λ“€μ„ μ²˜λ¦¬ν•˜κ³  싢은 κ²½μš°κ°€ μžˆμŠ΅λ‹ˆλ‹€. μ˜ˆμ‹œλ‘œ 검색을 μ™„λ£Œν•˜κ³ λ‚˜μ„œ 리턴 ν‚€λ₯Ό λˆ„λ₯΄κ³  λ‚œ ν›„, νŒμ—…μ„ λ…ΈμΆœμ‹œν‚€κ³  μ‹Άλ‹€λ˜μ§€ μ•„λ‹ˆλ©΄ 검색 결과에 λŒ€ν•œ ν™”λ©΄μœΌλ‘œ 이동 ν•˜κ³  싢은 경우 λ“±λ“±, μ—¬λŸ¬ μ΄λ²€νŠΈλ“€μ΄ μžˆμ„κ²λ‹ˆλ‹€. μ΄λ•Œ μœ„ ν•¨μˆ˜λ₯Ό μ±„νƒν•˜λ©΄ μ²˜λ¦¬κ°€ κ°€λŠ₯ν•©λ‹ˆλ‹€. μ•„λž˜ μ˜ˆμ‹œλ₯Ό 같이 λ³΄μ‹œμ£  둜그인 ν™”λ©΄μ—μ„œ 이메일과 λΉ„λ°€λ²ˆν˜Έλ₯Ό 받을 수 μžˆλŠ” ν™”λ©΄ μž…λ‹ˆλ‹€. return킀에 λŒ€ν•œ 이벀트λ₯Ό λ°›κΈ° μœ„ν•΄ delegateλ₯Ό μ—°κ²° ν–ˆμŠ΅λ‹ˆλ‹€. impor..

    Swift5.0 ν–₯ν›„ λ³€κ²½ 될 수 μžˆλŠ” Enum(μ—΄κ±°ν˜•) switch @unknown 속성 처리 SE-0192

    μ•ˆλ…•ν•˜μ„Έμš”~! μ˜€λŠ˜μ€ Enum에 λŒ€ν•΄μ„œ 이야기 해보렀고 ν•˜λŠ”λ°μš”. 이번 Swift5.0μ—μ„œ μΆ”κ°€λœ @unknown 속성에 λŒ€ν•΄μ„œ 이야기 해보렀고 ν•©λ‹ˆλ‹€. μ–΄λ–€ 역할을 ν•˜λŠ”μ§€ 같이 λ³΄μ‹œμ£ ~! 보톡 Enumκ°’ λΆ„κΈ°μ²˜λ¦¬μ‹œ Switch문을 많이 μ‚¬μš©ν•˜λŠ”λ°μš”. enum에 μžˆλŠ” λͺ¨λ“  case듀을 무쑰건 처리 ν•΄μ•Όν•©λ‹ˆλ‹€. @unknown 속성을 μ‚¬μš©ν•΄μ„œ λ―Έλ¬˜ν•˜κ²Œ λ‹€λ₯Έ 두 가지 방법을 ꡬ뢄할 수 μžˆλŠ”λ°μš” μ•„λž˜ μ˜ˆμ‹œλ₯Ό λ³΄κ² μŠ΅λ‹ˆλ‹€. νŒ¨μŠ€μ›Œλ“œ μž…λ ₯μ‹œ λ°œμƒ ν•  수 μžˆλŠ” μ—λŸ¬λ₯Ό κ°„λž΅ν•˜κ²Œ enum으둜 ν‘œν˜„ν–ˆμŠ΅λ‹ˆλ‹€ enum PasswordError: Error { case short case obvious case simple } μ—λŸ¬ 처리λ₯Ό ν•˜λŠ” λͺ¨μŠ΅μ„ λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€. func showPasswordError(_ error: ..

    iOS16 개발자 λͺ¨λ“œ μΆ”κ°€ (MacOS Ventura 이상)

    μ•ˆλ…•ν•˜μ„Έμš” μ˜€λŠ˜μ€ 개발자 λͺ¨λ“œμ— λŒ€ν•΄μ„œ μ†Œκ°œν•΄ λ“œλ¦¬λ €κ³  ν•©λ‹ˆλ‹€. 이전 iOS 16μ΄μ „μ—λŠ” κΈ°κΈ° ν…ŒμŠ€νŠΈμ‹œ 별 λ‹€λ₯Έ on, off μ„€μ • 없이 개발자 κ³„μ •μ—μ„œ ν•΄λ‹Ή λ””λ°”μ΄μŠ€λ₯Ό 등둝을 ν•˜λ©΄ μ•± ν…ŒμŠ€νŠΈμ‹œ μ‚¬μš©ν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ 이번 iOS16κ°€ 적용된 λ””λ°”μ΄μŠ€μ—μ„œλŠ” 개발자 λͺ¨λ“œλ₯Ό μΌœμ•Όλ§Œ Xcodeμ—μ„œ λ””λ°”μ΄μŠ€ ν…ŒμŠ€νŠΈκ°€ κ°€λŠ₯ν•œλ°μš”. 개발자 λͺ¨λ“œλŠ” 무엇이고, μ™œ μΆ”κ°€ λ˜μ—ˆλŠ”μ§€ μ–΄λ–»κ²Œ μ‚¬μš©ν•˜λŠ”μ§€ κ°„λ‹¨ν•˜κ²Œ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€~! 개발자 λͺ¨λ“œλž€? iOS 16μ—μ„œ μƒˆλ‘œμš΄ λͺ¨λ“œλ‘œ 일반적인 개발자 μ›Œν¬ν”Œλ‘œλ₯Ό μ§€μ›ν•˜λŠ” λͺ¨λ“œμž…λ‹ˆλ‹€. 개발자 λͺ¨λ“œλŠ” κΈ°λ³Έκ°’μœΌλ‘œ λΉ„ν™œμ„±ν™”λ˜μ–΄ 있고 κΈ°κΈ°λ₯Ό λͺ…μ‹œμ μœΌλ‘œ 개발자 λͺ¨λ“œ μ„€μ •ν•΄μ•Ό ν•©λ‹ˆλ‹€. 등둝은 μ‹œμŠ€ν…œ μ—…λ°μ΄νŠΈ 및 μž¬λΆ€νŒ… 이후에도 μœ μ§€λ©λ‹ˆλ‹€. 개발자 λͺ¨λ“œκ°€ ν•„μš”ν•œ 이유? κ°•λ ₯ν•œ 개발자 κΈ°λŠ₯이 ν•΄..

    Swift 5.0 Result Type μ†Œκ°œ (μ—λŸ¬ 처리λ₯Ό 쉽고 κΉ”λ”ν•˜κ²Œ κ²°κ³ΌλŠ” λͺ…ν™•ν•˜κ²Œ SE-0235)

    μ•ˆλ…•ν•˜μ„Έμš”~! μ˜€λŠ˜μ€ μƒˆλ‘­κ²Œ μ†Œκ°œλœ Result Type을 μ†Œκ°œν•΄ λ“œλ¦¬λ €κ³ ν•©λ‹ˆλ‹€. Result Type은 μ•„λž˜ μ½”λ“œ 처럼 enum으둜 μ„ μ–Έ λ˜μ–΄μžˆκ³  성곡과, μ‹€νŒ¨λ₯Ό Generic으둜 λ°›κ³  μžˆμŠ΅λ‹ˆλ‹€. μ‹€νŒ¨λŠ” 무쑰건 μ—λŸ¬ νƒ€μž…μ΄κ΅¬μš” @frozen enum Result where Failure : Error 기쑴의 μ—λŸ¬μ²˜λ¦¬ 방식을 κ°œμ„ ν•˜κ³  결과값을 λͺ…ν™•νžˆ λ°›κΈ° μœ„ν•΄ Result Type이 λ‚˜μ™”λ‹€κ³  λ³΄μ—¬μ§€λŠ”λ°μš”. μ™œ κ·ΈλŸ°μ§€ μ•„λž˜ 예제λ₯Ό 톡해 ν•¨κ»˜ λ³΄μ‹œμ£ ~! μ•„λž˜ 주문을 λ°›λŠ” λ°›μ•˜μ„ λ•Œ λ°œμƒ ν•  수 μžˆλŠ” κ°„λ‹¨ν•œ μ—λŸ¬λ₯Ό μ •μ˜ ν–ˆμŠ΅λ‹ˆλ‹€. enum OrderError: Error { case LackOfMoney } λ©”λ‰΄λŠ” 햄버거가 쒋을거 κ°™μ•„μš”. 햄버거 μ’…λ₯˜μ™€ μ’…λ₯˜μ— λ”°λ₯Έ 가격을 받을 수 μžˆμŠ΅λ‹ˆλ‹€. enum Hamb..