본문 바로가기

분류 전체보기

(38)
Apple Silicon에서 Homebrew가 Intel 경로에 설치되는 경우 해결법 정말 간단한데 응용 프로그램 -> 유틸리티 -> 터미널 -> 우클릭 -> 정보가져오기를 킨 다음 Rosetta 2 활성화를 해제하고 재설치 하면 됩니다. 터미널에 which brew 입력하면 경로를 뱉는데 /opt/homebrew/bin/brew에 설치되어 있어야 Apple Silicon 경로에 설치가 된겁니다. /usr/local/bin/brew 일 경우 Intel 경로에 설치가 된 것이라 사용 자체는 되지만 나중에 타 라이브러리 접근 사용에 문제가 발생하여 런타임 에러 등을 발생할 위험이 있습니다. 만일에 대비하여 homebrew 재설치 때는 지우고, 터미널 또한 Rosetta를 비활성화 한 다음 종료 후 재실행 하여 homebrew를 설치하면 제대로 된 경로에 설치가 이루어 질겁니다.
엔터프라이즈) iPA로 배포 한 앱이 실행이 되지 않을 때 이번에 엔터프라이즈 배포를 처음으로 해보면서 알게 된 사실을 공유합니다. iPA를 사용하는경우는 여태까찌 Firebase로 배포하는 경우가 밖에 없어서 늘 하던대로 Ad Hoc를 통해서 iPA를 추출했다. 근데 배포는 다른 팀이 해야해서 파일을 따로 전달한 후 테스트를 위해 설치를 했는데 상단의 사진과 같은 에러가 뜨면서 앱이 실행이 안돼는 현상이 발생.... 해결책은 무척이나 간단했습니다! 이유는 무척 간단했는데 엔터프라이즈 계정으로 배포하는 것은 Enterprise로 추출한 파일로 배포해야 한다는 것! 인증서만 받은 상태서 추출한 거라 엔터프라이즈 배포는 어떻게 해야하나~~ 하는 순간에 실수를 통해 실무기술을 습득했습니다. 새로운 지식을 습득해서 기분이 좋으면서도 이런 실수를 해야 새로운 것을 배우는..
Xcode 기존 Archive 메뉴 띄우기 iOS 앱을 다 만들어서 배포를 위해 TestFlight 업로드 / iPA 추출을 해야할 때가 옵니다. 보통은 TestFlight로 올려서 심사를 올리지만 테스트용, 앤터프라이즈 배포 등에 iPA 를 추출할 때가 있습니다. 이때 저는 항상 Archive로 실행해서 추출했는데 기존 버전을 출현할 때도 사용했습니다. 근데 다른 회사의 개발자분과 협업하면서 알게된 게 기존 Archive는 다른 메뉴로 즉시 실행할 수 있다는 걸 이제야 알게된 겁니다!! 저 같은 멍충이가 발생하지 않게 기록+꿀팁+당연한 지식을 첨부합니다. 보통은 저 Archive로 실행하지만 기존 버전의 업로드, 추출이 필요한 경우에는 저 메뉴로 바로 실행가능하다는 사실!!!
iOS) 중요한 값 Info.plist에 저장하여 사용하기 개발을 하다 보면 API Key값 같은 공개해서는 안돼는 고유의 값을 사용할 때가 많은데 이럴 때 어떻게 해야하나? 란 궁금증에 구글링을 해보니 .swift 파일에 선언하여 사용하는 것보다 Info.plist에 key-value에 입력한 후 접근해서 사용하면 안전하게 사용할 수 있다는 글귀를 읽게 되어 시도해보았는데 파일에 선언하는 것보다 훨씬 안전하고 값 자체가 따로 분리할 수 있어 개발하는 과정에서도 그 키값을 어디에 뒀더라? 이런 상황도 피할 수 있게 되어 좋은 것 같아 글을 쓰게 되었습니다. 이런 식으로 값을 넣어주고 var apiKey: String { get { guard let filePath = Bundle.main.path(forResource: "Info", ofType: "plist"..
Swift) Subscript Subscript(서브스크립트) - 클래스, 구조체, 열거형에서 시퀀스의 멤버 요소에 접근하기 위한 바로가기 첨자라고 합니다 아주 쉽게 예시로 말하면 배열에 인덱상 할때 '배열[0]' 를 하게 해주는 문법입니다 let num = [1,2,3,4,5] num[1] num[4] // 이 접근이 subscript Swift에서는 String을 파이썬처럼 "hello"[1] 이런식으로 사용을 할 수 없는데 subscript를 정의하면 사용할 수 있습니다 extension String { subscript(cIndex: Int) -> String? { guard (0.. String.Index 이 문법은 i 부터 distance까지 떨어진 String.Index를 리턴하는 함수입니다 "Hello"[String.I..
Swift) UIModalPresentationStyle 종류들 UIViewController 화면 이동 중에 UIModalPresentationStyle를 정할 수 있는데 여기서 굉장히 다양한 타입들이 존재합니다 이 종류들이 무엇을 뜻하는지 하나씩 일일이 테스트를,,,,해보겠습니다,,, enum ModalPresentStyle: Int, CaseIterable { case automatic = 0 case none case fullScreen case pageSheet case currentContext case overCurrentContext case popover case formSheet case overFullScreen } extension ModalPresentStyle { var style: UIModalPresentationStyle { switch..
Swift) Dictionary Default Value 코딩테스트 문제 풀이 중 Dictionary의 Value에 기본값을 지정할 수 있다는 것을 처음 알게 되었습니다 어떻게 하냐 했더니... let sample = ["a", "a", "a", "b", "b", "c", "d", "d"] var dictionary = [String: Int]() sample.forEach { let count = dic[$0] ?? 0 dic[$0] = count + 1 } print(dictionary) /* ["a": 3, "b": 2, "d": 2, "c": 1] */ value값은 Optional이기 때문에 분기문이나 디폴트 값으로 따로 할당한 후 할당한 변수를 연산하여 value에 값을 넣는 걸로 변경시킬 수 있는데 새로 알게된 default 문법을 사용하면 let..
Swift ArraySlice var intArray = [1, 2, 3, 4, 5, 6, 7, 8] var intSliceArray1 = intArray[2...3] var intSliceArray2 = intArray[0...3] var intSliceArray3 = intArray[0...] var intSliceArray4 = intArray[..