728x90 ios9 MVVM패턴 MVVM패턴은 Model-View-View Model의 약자로 이뤄진 디자인 패턴이다. MVVM패턴의 핵심은 명령어의 흐름이 단방향이라는 것이다. 명령어는 View → ViewModel → Model 방향으로만 전달이 되며, 이 외의 방향으로 전달된다면 그것은 MVVM패턴을 제대로 구현하지 않은 것이다. 이 말은 MVVM패턴의 데이터의 흐름은 명령어 흐름의 반대인 Model → ViewModel → View 방향인 것이다. Model 그저 데이터의 구조만 있으면 된다. 비즈니스 로직은 API통신이 있어서는 안된다. (모델 그 자체로서만 존재해야한다.) View UI에 대해서만 있어야한다. UI를 그리는 일과 사용자의 입력을 받아내는 곳이다. ViewModel UIKit 또는 SwiftUI를 import .. 2022. 11. 11. 웹뷰 구현하기(WebView) - UIKit WebView란? 프레임워크에 내장된 웹 브라우저 컴포넌트로 뷰(View)의 형태로 앱에 임베딩하는 것을 말한다. 쉽게 말해서, App에서 웹브라우저를 이용해 화면을 보여주는 방식을 뜻한다. 웹뷰의 구현방식 3가지 (기존의 UIWebView는 ios2.0에 출시 되었기 때문에 성능적인 측면에서 너무 부족하다. 그렇기 때문에 사용하지 않는 것을 추천한다.) 1. WKWebView ios 8.0에 출시 되어 현재 가장많이 사용되고 있는 방식이다. 가장 큰 장점은 웹페이지에서 할당하는 메모리는 앱과 별도의 스레드에서 관리하는 것이다. 즉, 웹페이지의 메모리가 아무리 크더라도 앱에는 영향이 없다는 뜻이다. 2. SFSafariView ios 9.0에 출시되었고 safari를 이용하는 웹뷰이다. WkWebview.. 2022. 11. 6. 컬렉션타입 - Dictionary(딕셔너리) Dictionary(딕셔너리)란? 컬렉션 타입의 한 종류로 데이터를 키와 값으로, 하나의 쌍으로 만들어 관리하는 순서가 없는 컬렉션이다. - [대괄호]로 묶는다. - 키값은 유일해야한다.(구분하는 요소이기 때문에), 값(value)은 중복 가능하다. - 한개의 딕셔너리에는 동일한 자료형 쌍의 데이터만 담을 수 있다. - 키값은 Hashable해야한다. Hashable이란? 어떤 타입이 Hashable이라는 뜻은 해당 타입을 해시함수의 input값으로 사용가능하다는 뜻이다. (Swift에서는 String, Int, Double등 기본타입이 모두 Hashable한 타입이다.) 딕셔너리는 내부적으로 순서가 정해져 있지 않다. 그래서 배열보다 검색속도가 빠르다.(배열처럼 순서대로 값을 찾는 방식이 아닌 키값으로.. 2022. 11. 5. 컬렉션타입 - Array(배열) 시작 전에, 컬렉션 타입에 대해 이해를 하면 좋다. 컬렉션 타입이란 데이터를 효율적으로 관리하기 위한 자료형으로 Swift에서 사용하는 여러개의 데이터를 한꺼번에 다루는 바구니 타입이다. 컬렉션 타입의 종류로는 Array(배열), Dictionary(딕셔너리), Set(집합) 이 세가지가 있다. 그 중, Array(배열)에 대해 알아보자. 1. Array(배열) - 데이터를 순서대로 저장하는 컬렉션으로 - [대괄호]로 묶는다. 배열 인덱스의 시작은 0부터이다. (이건 모든 프로그래밍 언어의 공통적인 사항이다.) - 각각의 데이터는 요소(element)라고 지칭한다. - 1개의 배열에는 동일한 타입의 데이터만 담을 수 있다. - (순서가 있기 때문에) 값은 중복이 가능하다. 배열의 각 요소(element).. 2022. 11. 3. 스토리보드 없애기 - Xcode 13 iOS13 이후로 SceneDelegate가 생겼다. 화면을 관할하는 델리게이트인데 이 전에는 AppDelegate에서 화면을 관할했다. (쪼개기를 잘해놨다.) 그 순서에 대해서 알아보자 먼저 프로젝트 파일을 생성 후 info.plist로 들어간다. 이렇게 나오면 Main.storyboard와 Storyboard Name부분을 삭제한다. 이 후, 포커스 되어있는 Main Interface도 지워준다. 그리고 SceneDelegate.swift로 들어가서 willConnect메서드에 원래있던 메서드를 삭제하고 guard let windowScene = (scene as? UIWindowScene) else { return } window = UIWindow(frame: UIScreen.main.bounds.. 2022. 10. 30. Result Type 시작전에 Result Type을 알아보기 전에 먼저 에러처리, 제네릭문법에 대해 알고 있어야 이해하기 훨씬 수월하다. (에러처리에 대한 또 다른 방법이기 때문이다.) Result Type이란? Swift5 부터 새로 도입된 개념으로 타입안에 결과를 넣어 결과를 가질 수 있는 개념이다. 이 말의 의미를 조금더 직설적으로 표현하자면 Result Type은 열거형으로 되어있다! 라는 의미이다. // 타입 enum Result { // 성공 케이스 case .success(let data): print("결과값은 \(data)입니다.") // 실패 케이스 case .failure(let error): print(error) } 에러가 발생하는 경우, 에러를 따로 외부로 던지는 것이 아니라, return 자체를 .. 2022. 10. 29. 이전 1 2 다음 728x90