본문 바로가기

iOS

(9)
[iOS] MVC모델의 효과적인 사용 MVC 모델이란, Model, View, Controller의 세 가지 부분으로 나누어서 효과적으로 관리하는 것을 말한다. 간단히 아래와 같은 그림으로 표현할 수 있다. 한마디로 사용자가 View를 통해서 화면을 보고 Controller를 사용하면 그것이 Model에 명령을 보내고 그 명령은 View를 업데이트 하는 방식이다. 실제로 현업에선 MVC 모델보다는 MVVM 모델을 더 많이 사용하는 것 같았다. MVC모델로 작성하게 되면 Controller 부분에 너무 많은 양이 몰리게 되기 때문에 그닥 효과적이지 않기 때문인 것 같았다. 그래도 나는 MVC모델을 알고 MVVM모델로 넘어가야한다는 생각과 아직은 어떤 방식으로 짜야 이것이 MVC모델이다!라고 하기 애매한 느낌이 들어 공부하게 되었다. 효과적으로..
[iOS] 코드로 UINavigationController 사용하기 ViewController를 다른 ViewController와 연결하는 방법에는 크게 4가지 종류가 있다. 1. NavigationController를 사용하여 화면 전환하기 2. ViewController의 View 위에 다른 View를 바꾸기 3. 다른 ViewController를 호출하기 4. Segueway를 사용하여 화면 전환하기 이번에는 NavigationController를 통한 화면 전환에 대하여 다루어 보려고 한다. FirstVC를 설정하고, push하는 형태로 secondVC를 띄우려고 했다. 그래서 버튼을 하나 만들고 그에 대한 Action으로 아래와 같은 코드를 넣어주었다. let secondVC = SecondViewController() self.navigationControll..
[iOS] SnapKit 사용하기 코드로 UI를 짜다 보면 `NSLayoutConstraint`를 주기 위해서 엄청난 코드의 양을 사용해야 할때가 많다. 요소가 적을 때는 괜찮지만 들어가는 요소가 많아지게 되면 `Contstraint`를 위한 코드가 엄청난 양을 차지하게 된다. 이것을 간결화하기 위한 것이 SnapKit 라이브러리이다. https://github.com/SnapKit/SnapKit SnapKit import하기 Xcode를 실행시키고 프로젝트 -> Package Dependencies -> +버튼 여기서 +를 누르고 깃허브링크를 입력하면 Package 설치가 완료된다. 완료된다면 이렇게 프로젝트 아래에 Package가 따로 뜬다. SnapKit의 사용 import SnapKit 일단 `import`를 해주고, `사용하고싶..
[Swift] Class와 Struct의 차이점 `class`와 `struct`는 언뜻 보면 비슷해 보일 수 있다. class Vehicle { var wheel = 4 func move() { print("move forward") } } struct Vehicle { var wheel = 4 func move() { print("move forward") } } 다음 예시를 보면 `class`와 `struct`라는 이름만 달라졌지 그 이외에 달라진 것은 없어보인다. let vehicle1 = Vehicle() 또한 사용을 할 때도 위와 같이 같은 꼴이다 보니 두 가지를 굳이 왜 구분해놓았지?라고 생각할 수 있다. 왜냐? 내가 처음에 그랬으니까~ 하지만 두개는 엄연히 다른 것이다.! 하나하나 어디가 다른지 같이 짚어보자. 1. 상속 `class`와 ..
[iOS Development] 스토리보드를 활용한 나만의 To Do List 만들기 - 1 ** 공부한 것을 정리하기 위한 블로그입니다 ** 일단 간단한 To Do List를 만들기 위해서 필요한 구성 요소가 무엇일까 생각해보았다. 1. 오늘 할일의 목록이 담긴 리스트 2. 리스트에 항목을 추가할 수 있는 버튼 3. 목록 중 하나를 수행했을 때 체크할 수 있는 버튼 4. 수행한 목록을 따로 볼 수 있는 곳 내가 생각한 최소한의 To Do List에 필요한 것은 이 정도였다. 가장 먼저 필요한 것은 항목이 들어갈 리스트를 만드는 일이었다. 긴 리스트를 만들기 위해서는 TableView라는 것을 사용한다. TableView와 TableViewCell을 모두 끌어다 놓으면 이런 모양이 생기고, 위에 Prototype Cell이 생긴다. 나는 각각의 요소를 출력할 때 사용하기 위해서 Prototype..
[Swift] while문의 구문이름표를 알아보자 코드를 짜다보면 반복문을 중첩해서 사용해야하는 일이 꼭 생긴다. 하지만 파이썬 개발을 하던 내가 정말 불편하다고 느꼈던 점은 파이썬에는 breakpoint가 존재하지 않는다. 그래서 이중 반복문이 되었을 때 모든 코드에서 break하기 정말 까다로웠다.;; 하지만 swift에는 breakpoint보다 더 유용한 구문이름표 라는 것이 존재한다. 구문이름표는 반복문마다의 이름을 설정해주고, 그 지정된 구문을 break나 continue등으로 바로 바깥쪽 반복문을 종료시킬 수 있다. var numbers: [Int] = [3, 2343, 6, 3432] numbersLoop: for num in numbers { if num > 5 || num < 1{ continue numbersLoop } var cou..
[Swift] String 관련 메서드 정리 hasPrefix 지정된 접두어로 시작하는지 확인하고, Bool값을 반환한다. let hello = "Hello" print(hello.hasPrefix("He")) // 출력 : true hasSuffix 지정된 접미어로 끝나는지 확인하고, Bool값을 반환한다. let hello = "Hello" print(hello.hasSuffix("lo")) // 출력 : true uppercased 모든 문자를 대문자로 바꾼 문자열을 반환한다. let hello = "Hello" print(hello.uppercased()) // 출력 : HELLO lowercased 모든 문자를 소문자로 바꾼 문자열을 반환한다. let hello = "Hello" print(hello.lowercased()) // 출력 :..
[Swift] 튜플 (Tuple) 알아보기 튜플 (Tuple) 튜플이란 "데이터의 묶음"이다. 타입에 따로 구애받지 않기 때문에 여러가지의 타입의 데이터를 묶어서 관리할 떄 사용된다. 다음 코드처럼 타입을 미리 정해서 사용할 수도 있고, var person : (String, Int, Double) = ("Suzzang", 26, 164.9) 다음 코드처럼 타입을 따로 정하지 않고 사용할 수도 있다. var person = ("Suzzang", 26, 164.9) 이때 튜플은 타입 추론에 의해서 컴파일러가 할당된 값을 기준으로 타입을 결정한다. 옵션을 누르고 튜플의 이름을 눌러보면 다음과 같이 자료형이 정해져 있는 것을 볼 수 있다. 튜플의 각 요소는 다음과 같이 튜플의 인덱스 값을 통해서 접근할 수 있다. var person : (String,..