본문 바로가기

분류 전체보기321

Git - Fork한 레포지토리 최신화 하기 생활코딩 생활iOS repo를 Fork받아서 PR을 한번 머지했는데 그다음 Fork된 repo에 원본으로부터, 현재까지 업데이트된 내용들을 가져와야하는 경우가 생겼다. 현재 remote된 주소 확인하기 입력 git remote -v 출력내용 origin https://github.com/isGeekCode/Life-iOS.git (fetch) origin https://github.com/isGeekCode/Life-iOS.git (push) upstream 세팅하기 git remote add upstream https://github.com/Swift-Coding-Club/Life-iOS.git 입력후 다시 remote된 주소를 확인하면 아래와 같이 나온다. git remote -v origin htt.. 2023. 3. 5.
깃 리모트 변경 하기 Git - 깃 리모트 변경 하기 기존 리포지토리 remote 제거 git remote remove origin 새 리포지토리 remote 추가 git remote add origin https://github.com/계정/리포지토리 2023. 3. 5.
ReactorKit - CountApp ReactorKit - 예제: CountApp RxSwift에 대한 자세한 개념은 다른 글에서 소개하려고 한다. 일단 MVVM에 대해 설명을 해야할 것 같다. 기존 MVC에서 MVVM으로 확장하면서 데이터바인딩이라는 개념이 등장하게 된다. Model과 View, ViewModel을 사용하는 MVVM구조는 특정 View의 속성과 ViewModel의 속성을 연결한 뒤 ViewModel 속성이 변경되면 자동으로 View를 업데이트하게 하는 구조이다. 이때 연결한다는 것이 데이터 바인딩이다. ViewModel에 선언된 값이 변할 때를 didSet이나 willSet같은 PropertyObserver를 통해 다음 동작을 선언해주는 것이다. 이걸 RxSwfit를 사용하면 어떤 동작이 시작되고 끝나는 것을 하나의 St.. 2023. 2. 13.
App의 기본구조 UIApplication - App의 기본구조 UIApplication: 애플리케이션의 라이프 사이클을 관리하는 싱글톤 클래스 화면을 터치하여 앱을 실행시키면 UIApplication이라는 클래스에 오프젝트 하나가 생긴다. 자신의 이벤트를 대행해줄 AppDelegate라는 오브젝트를 만든다. AppDelegate라는 Object는 개발자가 직접 만들어가는 클래스이다. Application의 시동, 종료, Background,Foreground, in-active, active 상태로 다녀오는 것을 관리한다. 가장먼저 하는 일은 window을 만드는 것이다. iOS에서는 기본적으로 Single-window이다. 하나의 window가 앱 전체를 채우고 있고, 앱을 종료하면 window가 종료된다. App에서.. 2023. 2. 11.
ios에서 싱글톤 만들기 Cocoa Design Pattern - Singleton 싱글톤 패턴이란, 특정 용도로 객체를 하나만 생성하여, 공용으로 사용하고 싶을 때 사용하는 디자인 패턴이다. 싱글톤 예시 생성방법 class Singleton { static let shared = Singleton() private init() {} } 접근방법 let singleton = Singleton.shared 모델을 담고 있는 싱글톤 예시 생성방법 class Singleton { static let shared = Singleton() private init() {} var model: Model? } // 만약 class라면 class Model { let name: String init(name: String) { self.nam.. 2023. 2. 8.
command line tools are already installed (사실 git 에러 아님) 발견 TIL을 치려고 하는데 git add . 을 입력했지만 에러코드가 발생. 깃을 만지는데 왜 xcode어쩌고 하는 에러가 발생하지?? 원인 MacOS 업데이트 후 아주 높은 확률로 git을 비롯한 다수의 개발 툴들이 다 xcrun 에러를 뱉는다. 이는 각 도구들의 문제가 아닌 CommandLineTools를 식별하지 못해 발생한 문제 이렇게 되면 깃 말고도 각종 도구들도 작동하질 않게 된다. 결국 Xcode 에러라고 봐야하나 Git 에러는 아닌것이다. xcode-select: error: command line tools are already installed, use "Software Update" to install updates 위 메세지가 나오는 경우는 이미 커맨드 라인 툴이 설치되어있는 상태.. 2023. 1. 21.
swift Array - 빠르게 빈 배열 만들기 Array - swift fast init Empty Array 반드시 배열의 타입을 명시해야 한다. 빈 배열은 세 가지 형태로 만들 수 있다. //let emptyArray = [] // error: 타입 명시가 돼 있지 않음. (형식 추론 X) let emptyArray: [Int] = []// 정식 문법 사용 let emptyArray2 = Array()// 단축 문법 사용 let emptyArray3 = [Int]() 2023. 1. 5.
UIImage - 경로를 통해 이미지 다운로드하여 동기, 비동기처리하기 이미지를 Assets에 넣어서 사용하기도 하지만 URL을 통해 가져오는 경우가 있다. 이때 이미지를 다운로드하고 이미지를 세팅하는 동안 다른 작업을 해야하는 경우도 있다. 그땐 Sync처리가 되어있는경우 앱이 잠시 멈추는 듯한 상황이 생기기 때문에 동시에 여러작업이 수반되어야하는 경우는 특별히 스레드를 분배해주어야한다. func loadImage(from imageUrl: String) -> UIImage? { guard let url = URL(string: imageUrl) else { return nil } guard let data = try? Data(contentsOf: url) else { return nil } let image = UIImage(data: data) return image.. 2022. 12. 26.
refresh control 사용하기 웹뷰를 아래로 스와이프하면 새로고침 되는 경험이 있을 것이다. 아이폰의 웹뷰에는 scrollView가 있고 여기에는 refresh control이라 부르는 것을 세팅할 수 있다. 이때 scrollView delegate를 세팅해야하고 특히 scrollView bounce는 false로 해두면 작동하지 않는다. let mainWebView = WKWebView() let refreshControl = UIRefreshControl() self.mainWebView.scrollView.addSubview(refreshControl) refreshControl.addTarget(self, action: #selector(reloadWebView(_:)), for: .valueChanged) /// 웹뷰 리프레.. 2022. 12. 13.
카톡 유튜브 재생목록 유튜브앱으로 실행하기 핸드폰에서 유튜브 재생목록 유튜브앱으로 실행하기 핸드폰 카톡에서 유튜브 재생목록을 주고 받을 때가 있습니다. 한곡이라면 일반적으로 사용하면되지만. 모바일에서는 링크를 타고들어가면 웹사이트로 켜집니다. 여기선 플레이리스트실행이 가능하지만 카톡을 사용할 수가 없어요. 그래서 유튜브에서 열기를 클릭해보면 해당 곡만 실행이 가능합니다. 결국 카톡을 쓰면서 플레이리스트 실행하기가 안되는거죠. 그래서 재생목록 링크를 직접 여는 방법을 사용합니다. 플레이리스트를 유튜브앱에서 여는 방법 카톡에서 플레이리스트 링크 클릭 상단에 URL클릭하고 한번더 클릭하면 옵션이 활성화됩니다. 링크열기 클릭하면 유튜브앱 스키마가 실행되어 바로 플레이리스트가 유튜브앱에서 실행됩니다. 2022. 11. 30.