본문 바로가기

전체 글114

.xcodeproj, .xcdatamodel git merge conflict 해결하기 목차 우선 git에서 merge하는 상황과, 충돌이 발생하는 상황, 그다음에 .xcodeproj 충돌 해결방법. .xcdatamodel 충돌 해결방법을 설명한다. 우선 충돌이 일어나지 않는 상황 메인 브렌치에서 A,B라는 사람이 각각 브랜치를 로컬에서 만들고 서로 계속 커밋하다가, A가 먼저 풀리퀘하면 메인 브렌치와 별다른 충돌없이 merge될 것 이다. 이때 fast-forward 로 메인 브렌치에서 커밋만 추가했기 때문에 별다른 특이점이 없다. ( 검은색 줄은 아무런 이벤트가 없고 그대로 가져온 상태를 의미 ) 충돌이 일어날 수도 있고 아닐 수도 있는 상황 위의 상황을 그대로 진행해보면, B는 언젠간 작업을 완료할 것이다. 완료했다라고 가정하고, 자신의 작업물을 풀리퀘할 것이다. 여기서 괜찮은 사람이.. 2021. 9. 15.
프로그래머스 - 위클리 챌린지 7주차 - 입실 퇴실 - swift https://programmers.co.kr/learn/courses/30/lessons/86048 코딩테스트 연습 - 7주차 사회적 거리두기를 위해 회의실에 출입할 때 명부에 이름을 적어야 합니다. 입실과 퇴실이 동시에 이뤄지는 경우는 없으며, 입실 시각과 퇴실 시각은 따로 기록하지 않습니다. 오늘 회의실에는 programmers.co.kr 문제 유형은 구현문제 일수도 있고, 나는 스택으로 풀어냈다. 구현문제로 접근하려고 논리를 세워봤지만 코드로 작성할 수 있는 깔끔한 논리가 떠오르지 않았다. 예를들어, 확실하게 만난 사람은, 다음과 같을 수 있겠다 1. 자신이 들어온다음에 들어온 사람들 중에서, 자신이 나가기전에 있는 사람들에 속한다면 반드시 만났겠다. 2. 자신이 들어오기 전에 사람들 중에서, 자.. 2021. 9. 15.
Google Drive API 사용하기- iOS 앱의 데이터를 백업하고자 플래폼을 이용하려고 한다. 하나의 서버를 두어서 모든 사용자들의 데이터를 백업하는 것이 아닌, 사용자의 계정의 클라우드에 저장하고자 한다. 그래서 Google Cloud API를 이용하려고 한다. 우선 GoogleDrive API는 다음과 같이 제한이 걸려있다. 아무리 찾아봐도 Google Drive API의 비용관련 공식글을 찾을 수가 없었다. 스택오버플로우에서는 다음과 같이 제한에는 무료로 누구든지 사용할 수 있다라고 한다. ... 굉장히 문서들이 뒤죽 박죽이라는 느낌이 강하다. 여기 찾고, 저기 찾고 ... 라이브러리 설치 우선, 라이브러리들을 이용해서 한다면, 다음 두 개의 라이브러리를 cocoapod을 통해 설치한다. GoogleSignIn은 구글로 로그인하기 위해 사용.. 2021. 9. 9.
빌드 환경 분리 - Xcode 이전까지는 빌드 환경에 대해서 딱히 고려하지 않았다. 필요성을 느낀 이유는 출시한 앱이 구글광고를 포함하고 있기 때문에, 개발환경에서는 해당 구글광고 유료 ID를 이용하면 안된다. ( 예전에 실수로 개발하다가 계속 유료 ID쓰면서 테스트했더니 구글로부터 경고 먹었었다. ) 그래서 개발할 때는 테스트 광고 ID를 사용하고, 출시할 때는 유료 ID로 변경해서 배포해야한다. 이걸 매번 수동적으로 하자니 불편함이 있고, 또 실수로 깜빡하는 경우도 생긴다. 그러면 또 다시 아카이브, 제출...하는 귀찮음이 발생한다. 지금까지 참고 오다가, 이번에 자동배포를 Fastlane을 적용해보면서, 자동화에 대해 관심이 생겼고, 광고ID도 자동으로 변경됐으면 하는 생각이 들었다. 내가 기대하는 결과는 다음과 같다. 개발을 .. 2021. 9. 9.
Relationship을 가지는 CoreData를 json으로 변환하기 우선 다음과 같은 Entity 2개가 있고, 각 relationship을 갖고 있다라고 가정하자. 그래서 Human에 대한 데이터를 json으로 저장하고자 한다. 각 NSManagedObject를 extension하여 encdoable을 채택해준다. extension Human: Encodable{ enum CodingKeys: String, CodingKey { case name, age } public func encode(to encoder: Encoder) throws { var container = encoder.container(keyedBy: CodingKeys.self) try container.encode(name, forKey: .name) try container.encode(age,.. 2021. 9. 7.
fastlane 적용하여 앱스토어 배포까지! 목차 그동안 듣기만 했던 Fastlane을 드디어 적용해보기로 했다. fastlane은 iOS, Android 앱의 CD ( Continuous Deploy ) 의 대표적인 툴이다. CD는 지속적 배포로써, iOS에서는 자동화 배포( 앱스토어, testFlight에 ) 를 도와준다. 배포해본 사람은 알겠지만.. 배포하고 앱스토어에 제출하는 것 까지 꽤 시간이 걸리고, 그동안의 과정들이 한번에 진행되는게 아니라 계속 확인하면서 클릭 클릭 해주어야 한다. 하지만 fastlane을 이용한다면 일련의 과정들을 명령어 하나로만 실행하여 완료될때까지 신경쓰지 않아도 된다! 크게, Fastlane을 설치하고, Fastlane 설정, testflight에 배포 app store에 배포 하는 방법등을 알아볼 예정이다. .. 2021. 9. 5.
iOS 사진 라이브러리 접근에 필요한 권한 나는 지금까지 무조건 사진 라이브러리 ( 사용자의 사진첩 ) 에 접근하기 위해서는 권한이 필요한 줄 알았다. 하지만, 단순히 접근해서 읽기만 하는 경우에는 명시적으로 권한을 요청할 필요가 없다. 만약 사진을 읽어와서 편집하여 사용자의 사진 라이브러리에 덮어씌우거나, 또는 사진 라이브러리에 저장하는 경우에는 권한이 필요하다. ( 다양한 글들에 그러한 내용을 발견할 수 있었는데, 공식문서에서도 확인할 수 있었다. ) 우선, iOS 14부터는 PHPickerViewController가 등장했는데, UIImagePickerController를 대체하는 새로운 picker다. 사진첩과 같은 인터페이스를 제공하면서, 멀티플 샐랙션을 제공한다. 여튼, 사진을 단순히 읽어오거나, 인터넷이나 이메일에 포함시키는 경우에는.. 2021. 9. 3.
백준 - 하노이 탑 이동 순서 - 11729 - swift https://www.acmicpc.net/problem/11729 11729번: 하노이 탑 이동 순서 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net 문제는 재귀 유형이다. 우선 풀이에 앞서 정말 감격스럽다. 코딩테스트 공부한지 1년만에 도움없이 혼자서 이해하고 풀었다. 그전까지 매번 하노이탑 볼 때 마다 이걸 어떻게 푸는건지 감도 오지 않았다. 심지어 예전에 풀이를 봤을때도 이해가 안갔었다. 하지만,... 1시간동안 고민 끝에 풀었다!ㅠㅠ 처음에는 완전탐색으로 접근했다가, 계속 이동하는 걸 그려보면서 다음과 같은 패턴을 찾을 수 .. 2021. 9. 3.