일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 야곰아카데미
- Modality
- Codegen
- Navigation
- SWIFT
- Failed to register bundle identifier
- NumberFormatter
- 스위프트
- View Life Cycle
- 스타트업주니어로살아남기
- 독서후기
- IOS
- contentInset
- Info.plist
- NotificationCenter
- 아이폰
- delegation
- 독후감
- 책후기
- @available
- Structures and Classes
- SWIFTUI
- 부트캠프
- mvvm
- xcode
- Mock
- viewcontroller
- UIResponder
- roundingMode
- human interface guidelines
- Today
- Total
목록Software Engineering/Swift (21)
호댕의 iOS 개발

String 배열에서 초성이 동일한 문자열끼리 묶어서 2차원 배열로 만드는 방식이 필요했다. 이 작업을 하면서 실제로 자료구조 / 알고리즘이 직접적으로 사용이 되는구나 싶었다. 사실 뷰를 그리거나 데이터를 파싱하거나 할 때에는 직접적으로 자료구조 / 알고리즘을 사용할 일은 없었으나, 이번에 필요성을 몸소 느끼게 되었다. 어찌됐든 한글 / 영어 / 숫자로 시작하는 문자열들을 같은 문자(한글의 경우 초성)로 시작하는 문자열로 변경하기 위해선 일단 초성을 가지고 오는 방식이 필요했다. 단순히 영문으로만 되어 있었다면 아래처럼 해도 시작 글자가 동일한지 알 수 있었을 것이다. func getFirstCharacter(word: String) -> String { return word.first?.uppercas..

오랜만에 Swift 관련 컨퍼런스를 참여했다. 4개의 Session으로 구성이 되어 있었고 주제는 다음과 같았다. RIBs를 통한 상태 관리 why MVVM PR과 코드 리뷰 Mock 데이터를 통한 항상 성공하는 테스트 코드 짜기 RIBs를 통한 상태 관리 - 김남현님 | VCNC 사실 RIBs에 대한 이해도가 거의 없다시피 해서 발표 내용에 대해 완전히 이해하진 못했다. RIBs는 Uber에서 만든 크로스 플랫폼 아키텍처 프레임워크로 iOS 뿐만 아니라 안드로이드에서도 사용 가능한 아키텍처이다. (아직 공부해본 적이 없는 아키텍처라 잘못된 내용이 있을 수 있습니다) Interactor : 비즈니스 로직이 포함되어 있다. Rx 구독을 수행하고 상태 변경 결정을 한다. 또한 child로 연결할 다른 RIB..

SnapKit 톺아보기 SnapKit은 기존 anchor를 사용해 Constraints를 잡는 것보다 짧고 쉽게 오토레이아웃을 잡을 수 있도록 도와주는 라이브러리이다. 회사에서 프로젝트를 하며 처음 사용해봤는데 내가 생각했을 때 가장 좋은 장점은 translatesAutoresizingMaskIntoConstraints를 따로 안써도 된다는 것이다. 그리고 코드 자체도 꽤 간단해진다. 아래 코드처럼 직접 잡던 것들을 좀 더 간단하게 잡을 수 있다! NSLayoutConstraint.activate([ { 레이아웃 관련 코드 } ]) 스토리보드에선 자동으로 translatesAutoresizingMaskIntoConstraints를 false로 할당해주지만 코드로 레이아웃을 잡게 되면 이를 직접 작성해줘야..

프로젝트를 진행하면서 소수점 값이 존재하는지 확인할 필요가 있었다. 그래서 Double 타입에서 %(모듈로) 연산자를 통해 1로 나눈 나머지가 있는지 확인하려 했다. 그런데 왠걸?! 이런 에러를 만났다. '%' is unavailable: For floating point numbers use truncatingRemainder instead 사실 에러를 보면 간단하게 해결이 가능하다. %(모듈로) 연산자는 Int에만 정의가 되어 있기 때문에 Double에선 사용이 불가능했던 것이다. public static func % (lhs: Int, rhs: Int) -> Int 알고나면 진짜 간단하지만 갑자기 에러가 뜨면 당황할 수도 있기에... 그래서 다음과 같이 정의되어있는 함수 .truncatingRema..

defer... 지금까지 크게 사용할 일이 없어서, 찾아봐야지 하고 미루고 미루다 정리를 하게 됐다. 진짜 이름따라 블로그 정리도 늦춰진 것 같다.. ㅎㅎ... 그렇다면 defer는 뭘까? 일단 사전에 찾아보면 다음과 같이 나온다. defer = 미루다, 연기하다 문자 그대로 함수의 scope가 종료할 때 실행될 행동을 defer문 안에 두고 이를 가장 마지막에 사용할 수 있다. 간단한 예시를 살펴보자 func deferStatement1() { defer { print("나중에 실행하기") } print("먼저 실행하기") } deferStatement1() 기존 함수를 실행할 때에는 함수가 정의되어 있는 순서대로 호출이 되지만 defer문 안에 있는 것은 함수의 scope가 종료되는 시점에 동작하도록..

반복문, 조건문, 함수를 사용하다보면 제어 전송문을 사용하게 된다. 그래서 이를 총 정리해보고자 한다. 🌀 break Switch 문 해당 케이스에서 실행하는 문장이 없는 경우 break를 사용함 만약 작성을 하지 않는다면 이와 같은 에러가 발생한다. 'case' label in a 'switch' must have at least one executable statement 'default' label in a 'switch' must have at least one executable statement var num = Int.random(in: 1...100) var array = ["Hello", "Jobs", "Swift", "Cook"] switch num % 4 { case 0: print(..

이는 앨런 Swift 문법 마스터 스쿨을 듣고 정리한 글입니다. 앨런 Swift문법 마스터 스쿨 (온라인 BootCamp - 2개월과정) - 인프런 | 강의 Swift문법을 제대로 이해, 활용해보고자 하는 철학을 바탕으로 과정이 설계되었습니다. 코딩에 대해 1도 모르는 비전공자를 시작으로 네카라쿠배에 입사할 수 있는 초고급 수준까지 올리는 것을 www.inflearn.com 🧺 Collection은 뭘까? 그렇다면 Collection은 뭐라고 정의할 수 있을까? 이는 여러 개의 데이터를 효율적으로 관리하기 위한 자료형이라고 볼 수 있다. 즉, 다양한 데이터를 담아 용도에 따라 사용할 수 있도록 하는 바구니 역할인 것이다. Swift에선 Collection으로 크게 Array, Dictionary, Set..

Swift Language Guide와 앨런 Swift 문법 마스터 강의를 바탕으로 작성한 글입니다. 앨런 Swift문법 마스터 스쿨 (온라인 BootCamp - 2개월과정) - 인프런 | 강의 Swift문법을 제대로 이해, 활용해보고자 하는 철학을 바탕으로 과정이 설계되었습니다. 코딩에 대해 1도 모르는 비전공자를 시작으로 네카라쿠배에 입사할 수 있는 초고급 수준까지 올리는 것을 www.inflearn.com Generics — The Swift Programming Language (Swift 5.7) Generics Generic code enables you to write flexible, reusable functions and types that can work with any type, s..