728x90

분류 전체보기 290

[iOS] Error Domain=NSURLErrorDomain Code=-1200 해결방법

안녕하세요. 이번에는 WKWebView로 특정 URL을 출력하는 상황에서 아래와 같은 에러가 발생할 때 쉽게 해결할 수 있는 터미널 명령어를 하나 소개해볼까 합니다. Error Domain=NSURLErrorDomain Code=-1200 "An SSL error has occurred and a secure connection to the server cannot be made. ## nscurl을 씁시다 보통 저 에러가 나면 Info.plist > ATS > Allow Arbirarty Loads를 true로 설정하라고 합니다. 대부분 그걸로 해결이 되긴 하는데, Allow Arbirarty Loads 설정은 모든 웹사이트에 대한 보안성을 자체적으로 떨어뜨리는 설정이기 때문에 좀 속상하긴 하죠.. 이..

TroubleShooting 2023.02.15

[iOS] Unsupported Swift architecture 해결방법

# 이슈 Custom framework를 넣고 디바이스 빌드를 했더니 Custom framework의 Swift header에서 아래와 같은 에러가 발생했습니다. # 조사 architecture는 x86_64, arm64가 들어가 있는 것을 확인했고, 이상하게도 시뮬레이터 빌드했을 때는 에러가 안 생겼습니다. 또한, framework를 100% Objective-C 코드로 구성했을 때는 문제가 없었는데, 이번에 Swift 코드도 같이 넣었더니 {Framework 이름}-Swift.h에서 컴파일 에러가 발생했습니다. 여기서 발생했고, 어디에 if-else 문을 따라 올라가서 확인했더니 가장 맨 윗줄에 #elif defined(__x86_64__) && __x86_64__라고 쓰여 있었습니다. 디바이스 빌드..

TroubleShooting 2023.02.11

jenkins branch 설정방법

안녕하세요. 많은 분들이 jenkins로 빌드 많이 하시죠? 그리고 작업은 feature branch로 나눠서 작업하시구요. jenkins에서 특정 branch로 checkout 해서 빌드하려면 어떤 branch 인지 알아야겠죠? 이번에는 그 branch를 설정하는 방법에 대해 알아볼게요. # github branch 설정 방법 branch 결정하는 방법은 크게 2가지 방법이 있습니다. branch 명 직접 입력 branch 목록 중 선택 ## 1. branch 명 직접 입력 첫 번째 방법은 빌드할 때 branch 명을 직접 입력해 주는 방법입니다. 아래처럼 jenkins에 String 파라미터를 추가해 주고 매개변수 명은 GIT_BRANCH로 넣어주세요. (환경변수로 사용할 거라 매개변수 명은 꼭 GI..

기타 2023.02.07

스크립트로 Swift 변수값 변경하기

안녕하세요. 이번에는 shell command로 swift 파일의 특정 변수(상수)값을 바꿔보는 시간을 가져볼게요. # 이게 왜 필요해...? swift 파일의 값을 바꾸고 싶으면 직접 바꾸면 되지 왜 shell command까지 쓰면서 바꿔야 해...? 이런 의문이 들 수 있는데요. 맞는 말씀입니다. 근데 만약 전체 로직하고는 크게 연관 없지만 빌드(또는 배포)할 때 값이 바뀌어야 하는 경우라면 shell command로 자동화시키는 게 편할 수 있습니다. 예를 들어, 어떤 framework가 있고 framework 안에는 framework의 버전값을 출력해 주는 API가 있다고 해볼게요. 개발자가 직접 버전값을 수정하면 머지할 때 협업하는 사람하고 충돌이 발생할 가능성이 높으며, 버전값을 까먹고 수정..

기타 2023.02.03

Copyright 문구 제거

안녕하세요. 파일 생성 시 자동으로 붙는 Copyright 문구를 제거하는 방법에 대해 알아볼게요. # 방법 아래 경로로 가서 cd ~/Library/Developer/Xcode/UserData IDETemplateMacros.plist란 파일을 만들어 주시면 됩니다. 이후부터는 모든 프로젝트, 모든 파일 생성 시 헤더에 Copyright 문구가 추가되지 않습니다. 👍 👍 👍 # 기타 ## Copyright 문구 되살리고 싶은 경우 위에서 만든 IDETemplateMacros.plist 파일을 아래처럼 수정하거나 제거해 주시면 됩니다 ^^ ## 특정 프로젝트에서만 Copyright 문구를 쓰고 싶지 않은 경우 처음에 IDETemplateMacros.plist 파일을 추가했던 경로는 모든 프로젝트에 적용되..

Xcode 2023.01.24

F, J 돌기 만들기

회사 팀원분께서 돌기 없는 F, J 키캡에 돌기 이식을 해달라는 요청을 주셨습니다.. 작업해보도록 하죠.. 플라스틱을 조그맣게 잘라서 붙일 겁니다. 집에 굴러다니는 프라모델 런너에서 플라스틱 봉을 추출했습니다. (다들 집에 런너 한 장씩은 있죠...?) 불로 지져서 얇게 늘려주고 필요한 만큼만 잘라줍니다. 불로 지졌기 때문에 그을음이 생겼습니다ㅠㅠ 유리사포로 표면 전체를 가볍게 갈아주고 원기둥 형태의 플라스틱을 반원 형태로 갈아줬습니다...^^ (키캡에 붙일 표면적을 넓히기 위한 작업입니다.) 양 끝 모서리는 아트나이프로 가볍게 정리해 주고, 양면테이프로 키캡에 붙여주세요. 고갱님께서 만족하셨다고 합니다..ㅎㅎ.. 이번 글은 여기서 마무리.

취미 2023.01.19

Xcode Custom File Template 만드는 방법

안녕하세요. Xcode에서 파일 추가(command + n)를 하면 이런 화면이 보입니다. 여기서 'SwiftUI View'를 선택하면 이런 코드가 자동으로 생깁니다. 이건 File Template 덕분에 가능한 일입니다. Xcode에 이미 정의되어 있는 템플릿 외에도 사용자가 직접 템플릿을 만들어서 사용할 수 있습니다. 이번에는 템플릿을 직접 만들어보는 방법에 대해 알아볼게요. (전체 템플릿은 여기 참고해 주세요.) # Custom File Template 만들기 파일을 생성하면 자동으로 View, ViewModel, Model 파일을 만들어주는 템플릿을 만들어볼게요. ## 템플릿 기초 틀 만들기 처음부터 템플릿을 만들어도 되긴 하지만, 저는 귀찮아서 Empty 파일을 생성하는 템플릿을 활용해 볼까 합..

Xcode 2023.01.17

computed property vs method

안녕하세요. 이번에는 computed property와 method 중 어떤 방식으로 구현할지 선택하는 기준에 대해 정리해봤습니다. # computed property? method? Swift로 개발하다보면 computed property를 종종 사용하게 되는데요. 그런데 computed property로 구현할 수 있는건 method로도 구현할 수 있습니다. 예를 들어서 Length라는 구조체가 있다고 가정해볼게요. miter는 몇 미터인지 나타내는 stored property 이고, inch는 miter 값을 기반으로 몇 인치인지 나타내는 computed property 입니다. 그런데 inch 프로퍼티는 아래처럼 method로도 구현할 수 있어요. 큰 차이가 없다면 뭘 쓰는게 좋지..? compu..

Swift 2023.01.13

matchedGeometryEffect

안녕하세요. 이번에는 matchedGeometryEffect에 대해 공부해 볼게요. # matchedGeometryEffect matchedGeometryEffect는 SwiftUI의 수식어 중 하나입니다. Defines a group of views with synchronized geometry using an identifier and namespace that you provide. Identifier(ID)와 namespace를 사용해서 동기화된 geometry로 뷰 그룹을 정의한다. 잘 모르겠....;; Discussion을 좀 더 살펴볼게요. If inserting a view in the same transaction that another view with the same key is r..

SwiftUI 2023.01.10

contentShape

안녕하세요. 이번에는 SwiftUI 수식어 중 하나인 contentShape에 대해 공부해 봤습니다. # contentShape Defines the content shape for hit testing hit testing을 위한 영역을 정의할 수 있다. (hit testing에 대해선 Zedd님 글에 아주 잘 정리되어 있으니 읽어보시면 좋습니다ㅎㅎ) 즉, hit testing이란 터치나 드래그 같은 이벤트를 받는 것을 말합니다. 즉, contentShape 수식어는 터치나 드래그 같은 이벤트를 받기 위해 영역을 정의한다고 볼 수 있어요. ## 예시 가장 대표적인 예시 먼저 소개할게요. 아래처럼 View를 구성할 경우 Spacer 영역에는 onTapGesture 이벤트가 발생하지 않습니다. 이때 con..

SwiftUI 2023.01.03