본문 바로가기

분류 전체보기326

간단한 MVVM구조 예제 간단한 MVVM구조 예제 원문 https://www.kodeco.com/34-design-patterns-by-tutorials-mvvm https://lsh424.tistory.com/68 깃: https://github.com/lsh424/MVVM_iOS MVC정리 https://lsh424.tistory.com/44 ! ├── AppDelegate │ ├── AppDelegate.swift │ └── SceneDelegate.swift │ ├── Controllers │ ├── ViewController.swift │ └── ViewController2.swift │ ├── Models │ └── Dog.swift │ ├── ViewModels │ └── DogViewModel.swift │ └──.. 2022. 11. 23.
연산프로퍼티 - 프로퍼티(2) 연산프로퍼티 - 프로퍼티(2) [참고: 애플문서] [참고: Zedd’s Blog] 프로퍼티 시리즈 저장프로퍼티(feat.클래스와 구조체) - 프로퍼티(1) 🍊 연산프로퍼티(Getter/Setter) - 프로퍼티(2) 프로퍼티 옵저버(willSet / didSet) - 프로퍼티(2.5) 타입프로퍼티(static) - 프로퍼티(3) Property는 저장프로퍼티와 연산프로퍼티, 타입프로퍼티 가 있다. 이제 설명할 내용은 그중 연산프로퍼티다. 저장프로퍼티는 상수와 변수값을 인스턴스의 일부에 저장한다. 클래스와 구조체에서만 사용된다. 반면 연산프로퍼티는 값을 저장하기보다는 특정연산을 수행하여 값을 반환한다. 클래스와 구조체, 열거형에서 사용된다. 클래스, 구조체, 열거형 (Class, Struct, Enum)에.. 2022. 11. 22.
저장프로퍼티 - 프로퍼티(1) [참고: 애플문서] [참고: Zedd’s Blog] 프로퍼티 시리즈 🍊 저장프로퍼티(feat.클래스와 구조체) - 프로퍼티(1) 연산프로퍼티(Getter/Setter) - 프로퍼티(2) 프로퍼티 옵저버(willSet / didSet) - 프로퍼티(2.5) 타입프로퍼티(static) - 프로퍼티(3) Property는 저장프로퍼티와 연산프로퍼티, 타입프로퍼티 가 있다. 클래스나 구조체는 이 저장프로퍼티, 연산프로퍼티로 이루어지는 것이다. 연산프로퍼티는 열거형에서도 사용된다. 이제 설명할 내용은 그중 저장프로퍼티다. Stored Property 저장프로퍼티는 클래스와 구조체에서만 사용된다. 저장프로퍼티를 선언할 때는 저장할 기본값을 줄 수 있고, 이후 수정할 수 있다. 이때 사용되는 것이 변수와 상수이다. .. 2022. 11. 21.
앱과 웹간 소통방법(1) 앱과 웹간 소통방법(1) 웹뷰 디버깅 사파리 - 관리자도구를 누르면 콘솔창이 보인다. 이 콘솔창에 특정 키를 넣어 입력할 수 있다 웹뷰 새로고침 좌측 상단의 새로고침 버튼 콘솔창 입력 → 강력 새로고침 : window.location.reload() 콘솔에서 네이티브로 message를 보내는 테스트도 가능 아래 메시지를 입력하고 엔터를 치면, Xcode에서 메시지 수신 확인이 가능 window.webkit.messageHandlers.HandlerName.postMessage window.webkit.messageHandlers.HandlerName.postMessage('test') 이 방법은 나중에 소개하도록 하겠습니다! 1. 콘솔에서 네이티브로 alert보내기 window.alert("GeekCod.. 2022. 11. 18.
여러가지 접근권한요청 여러가지 접근권한요청 앱을 만들고 테스트를 하다보면 갑작스런 쓰레드에러가 나는 경우가 있다. UIView를 그리는데 있어 에러가는 경우는 Xcode에서 친절하게 보라색으로 표시해주지만 카메라, 사진첩 등 따로 권한을 요청해야만 하는 경우가 있다. 웹뷰를 사용하는 경우, 웹에서 따로 실행시켜준다면 넘어갈 수 있지만 사진을 찍는 경우: 카메라 사용 권한 동영상을 찍는 경우: 마이크 사용 권한 위와 같은 내용 뿐만 아니라 정말 다양한 권한들이 있다. 세팅방법 info.plist에 내용을 추가 하기만하면 정상작동한다. 다양한 접근권한 아래와 같이 다양한 권한이 존재한다. 애플 문서 블루투스 : Privacy - Bluetooth Always Usage Description 캘린더 : Privacy - Calen.. 2022. 11. 17.
WKWebView - Navigation Delegate함수 WKWebView에서 탐색 요청을 수락,로드 및 완료하는 과정에서 트리거되는 메서드들 세부코드 import Foundation import WebKit // MARK: - NavigationDelegate extension MainViewController: WKNavigationDelegate { // MARK: - 1. navigation request를 허용 / 거절하기 /// 지정된 action정보를 기반으로, 새 콘텐츠로 이동할 수 있는 권한을 요청하는 메서드. /// navigation request를 허용하거나 거부할 수 있다. /// - decisionHandler( .allow / .cancel / .download ) func webView(_ webView: WKWebView, dec.. 2022. 11. 15.
전통적인 MVC구조로 HTTP사용하기 전통적인 MVC구조로 HTTP사용하기 참고 포스팅 (원문) 참고 깃허브 컨트롤러는 일반적으로 공개적으로 사용 가능한 기능 모델을 통해 모델과 통신합니다. 모델은 KVO를 통해 컨트롤러와 통신할 수 있습니다. M: 데이터 및 데이터를 조작하는 로직 모델 개체 혹은 네트워킹 코드 V: C가 제어해야하는 UI구성요소 C에게 알리기위해 target-action 혹은 delegate패턴을 사용할 수 있다. 자기가 보여주고 있는 Model을 소유하고 있지않다 → 테이블뷰의 Delegate를 사용한다. C: M과 V사이에 위치 - 일반적으로 Delegate패턴 사용 아웃렛을 통해 뷰와 소통할 수 있다. 하지만 우린 궁극적으로는 모델에서 뷰로가는 소통을 멈춰야한다. 예를 들어 계산기를 만들때 뷰는 UIButton의 특.. 2022. 11. 14.
UserInterfaceState.xcuserState가 자꾸 떠요 UserInterfaceState.xcuserState가 자꾸 뜰 때 Xcode작업을 하고 깃에 업로드를 하다보면 UserInterfaceState.xcuserstate 이 파일이 계속 보일 때가 있다. 그리고 프로젝트 파일을 그냥 훑어보기만해도 깃 백스테이지에 변화가 생겼다고 보이는게 여간 성가신게 아니다. 이 파일은 로컬중심으로 데이터가 생성되고 재구성하면서 파일이 생성된다. 혼자 할때는 계속 깃에 동기화를 해도 문제가 전혀없지만, 협업중에는 이걸 올리고 서로 머지를 하다가는 Conflict가 너무 자주 생겨버버려서 홧병으로 쓰러질 수가 있다. 이를 해결하기 위한 첫번째 방법은 .gitIgnore를 사용하는 것이다. 방법1: git Ignore사용하기 ignore파일의 하단에 *.xcuserstate.. 2022. 11. 8.
git ignore 사용하기 보통 우리가 사용하는 프로젝트는 깃을 통해 버전관리를 할수가 있다. git push를 하게 되면 Local에서 사용하는 프로젝트는 Remote에 저장이 되는데 이때 private하거나 궂이 remote에 안올라가도 되는 파일들이 있을 때가 있다. 공유하면 곤란한 key 값이나 각종 라이브러리에 대한 정보가 담긴 cocoapods, spm 등등이다. 이 파일들. 특히 라이브러리 관련 파일들은 새롭게 빌드하게 되면 또 새로운 파일로 인식을 하게 되는데 그럴때마다 깃에서 인식을 해버리면 매번 커밋을 하기전에 신경이 쓰이는 일이 벌어진다. 개인적으로 작업한다면 모르겠지만 여러명이서 협업을 하게 될경우 , xcode에 담겨있는 유저정보가 서로 덮어쓰기 되면서 충돌을 일으킬 가능성도 있다. 이를 위해서 하는 작업이.. 2022. 11. 8.
preview, canvas 위치 이동시키기 정말 킹받는 일은 회사에선 preview가 우측에 잘나오다가 집에서 위아래로 나올때가 있다는 거다. 혹은 멀쩡하다가 갑자기 위 아래로 바뀌는 날이 있다는 말이지.. 그냥 위아래로 작업을 할 수는 있지만.. 솔직히 신경쓰이니까.. 30분동안 귀찮아서 그냥 작업하다가 신경쓰여서 이것저것 만져보다가 찾았다. 다른 분들의 시간을 아끼기 위해... 그리고 또 이럴 나의 미래를 위해 기록합니다!! 2022. 11. 7.