전체 글

공부하거나 삽질한 내용을 정리하는 블로그입니다.
· iOS
문제 API 호출을 하려고 하는데 문제 없는 URL String을 URL 객체로 변환하니까 자꾸 nil이 반환되는 문제가 있었다. 저번에는 됐는데 왜 된거지 암튼 검색해보니 주소에 한글이나 스페이스 등이 들어갈 때 nil이 될 수 있다고 한다. 역 이름 인자로 한글이 들어가기 때문에 이런 문제가 생겼던 것 같다. 해결 ➡️ 인코딩을 해주면 해결할 수 있다. .addingPercentEncoding을 사용하면 인자로 지정된 CharacterSet에 명시되어 있지 않은 모든 Characters를 백분율로 인코딩된 문자로 바꿔준 뒤, String? 값으로 반환해준다. let encodedURL = arrivalUrl.addingPercentEncoding(withAllowedCharacters: .urlQue..
· Etc
맥북의 기본 터미널 앱 대신 많이 사용하는 iTerm2에 포켓몬 테마를 적용할 수 있다는 글을 발견했다. 아래 레포에서 다운받아 사용하면 된다. https://github.com/LazoCoder/Pokemon-Terminal GitHub - LazoCoder/Pokemon-Terminal: Pokemon terminal themes. Pokemon terminal themes. Contribute to LazoCoder/Pokemon-Terminal development by creating an account on GitHub. github.com 나는 그동안 기본 터미널 앱을 사용하고 있었는데 눈돌아가서 바로 iTerm을 설치해서 커스텀해보았다. 적용 순서 순서는 대강 이런 것 같다... iTerm..
· iOS
Xcode를 사용해서 iOS 개발을 할 때는 다른 사람과 같이 협업하는 경우도 많습니다. 하지만 프로젝트의 Bundle Identifier는 유일하기 때문에 다른 같은 프로젝트여도 다른 사람이 작업할 때는 그 사람의 Bundle Identifier를 사용해야 합니다. 그래서 다른 사람이 작업한 내용을 pull 해오면 Bundle Identifier를 다시 내껄로 수정해줘야 하는 경우가 많았습니다. 이런 상황을 방지하고 싶다면, 개발자 팀 추가를 해준 뒤, Provisioning Profile(프로비저닝 프로파일)과 Certificate(인증서)를 해당 팀원에게 공유해주면 됩니다. 위의 세팅이 잘 된다면 이후 협업 시에 팀원끼리 같은 Bundle id를 사용해도 충돌이 나지 않습니다. Certificate..
· iOS
공식문서 https://developer.apple.com/documentation/watchconnectivity Watch Connectivity | Apple Developer Documentation Implement two-way communication between an iOS app and its paired watchOS app. developer.apple.com 1. Watch Connectivity란? iOS 앱과 페어링된 watchOS 앱 간의 양방향 통신을 구현할 수 있도록 해주는 프레임워크입니다. 페어링된 기기의 앱과 소량의 데이터 또는 전체 파일을 전달할 수 있도록 해줍니다. 2. WCSession watchOS 앱과 companion iOS 앱 간의 통신을 시작하는 객체 c..
· iOS
Core Motion의 공식 문서와 WWDC23 영상을 보고 공부한 내용을 기반으로 정리한 내용입니다. 공식문서 https://developer.apple.com/documentation/coremotion Core Motion | Apple Developer Documentation Process accelerometer, gyroscope, pedometer, and environment-related events. developer.apple.com 관련 WWDC 영상 (2023년) https://developer.apple.com/wwdc23/10179 What’s new in Core Motion - WWDC23 - Videos - Apple Developer Learn how you can u..
포스텍(포항공대)에서 진행되는 애플 디벨로퍼 아카데미 2기에 합격하였습니다. 지원 과정과 후기를 간단히 적어보려고 합니다. 1. 지원 동기전부터 iOS 공부를 한 번 쯤은 해보고 싶었지만, 대학교를 다니는 동시에 공부를 같이 하는 건 부담을 느껴서 하지 않고 있었습니다. 진입장벽도 높아 보이고... 뭐 그런 이유로 졸업 프로젝트도 iOS 앱이지만 React-Native로 개발하고 그랬습니다. 그러다 졸프와 에이블스쿨로 정신 없던 와중 학교 형에게 애플에서 진행하는 아카데미가 지원자를 모집 중이라는 얘기를 들었습니다. (9월쯤이었던 것 같음) 오~ 하고 대충 찾아봤더니 아카데미의 삐까번쩍한 시설과 함께 포스텍+애플 딱지가 붙어 있다는 점에서 웬만한 스펙으로는 붙기도 힘들겠다고 느꼈습니다. 하지만 결정적으로..
· iOS
원래 SwiftUI 프로젝트에(UIKit도 똑같을듯) .mlmodel 파일을 추가하면 알아서 해당 모델의 클래스를 만들어주고, 해당 클래스의 인스턴스를 만들어서 사용할 수 있습니다. 그런데 WWDC 스스챌 때문에 플레이그라운드 앱으로 프로젝트를 생성하고(.swiftpm) 모델 파일을 추가해보면 모델의 클래스를 만들어주지 않습니다;;;; 때문에 패키지 매니저가 해당 모델을 찾아서 불러올 수 있도록(?) 설정을 해주어야 합니다. 큰 흐름은 다음과 같습니다.💡 .mlmodel 파일 추가 → 모델 파일 컴파일 → 패키지 매니저에 타겟 추가 → 불러오기 1 . 먼저 프로젝트 디렉토리에 Resources 라는 이름의 디렉토리를 직접!! 만들어줍니다. 2. 만들어준 Resources 디렉토리의 안에 .mlmodel ..
· Git
매일 공부한 실습 내용을 깃허브 원격 저장소에 푸시하며 잔디를 열심히 심고 있었다. 열심히 했는데 이틀 동안 잔디가 심어지지 않은 것을 볼 수 있다ㅠ 아카데미에서 새로 받은 맥북에서 저장소를 만들고 공부 중이었기 때문에 원격 저장소 연동 시 깃허브 사용자 이름을 설정 안해줘서 이렇게 된 것 같았다. 먼저 author명을 변경하고자 하는 커밋의 직전 커밋의 해쉬 코드로 rebase 해준다. 나같은 경우에는 80979d8f부터 최근 커밋까지 모두 수정해줄 것이기 때문에 80979d8f의 직전 커밋인 7b638a23로 rebase 해주었다. git rebase -i rebase를 해주고 나면 아래와 같은 vi편집기 창이 뜨게 된다. 해쉬 코드로 이동한 커밋 후의 커밋들이 쭉 나오는 것을 볼 수 있다. 여기서 ..
· iOS
AppDelegate.swift : 앱의 실행 주기(Life Cycle)를 관리SceneDelegate.swift : 사용자 인터페이스(User Interface)의 실행 주기(Life Cycle)를 관리ViewController.swift : 화면에 보이는 뷰에서 처리하는 내용의 스위프트 코드 소스를 담고 있는 클래스 파일 (뷰 하나당 클래스 하나 대응)Main.storyboard : 앱의 내용을 시각적으로 쉽게 프로그래밍 할 수 있도록 해주는 파일Assets.xcassets : 앱의 아이콘을 보관하는 저장소LaunchScreen.storyboard : 앱이 실행될 때 잠시 나타나는 스플래시 화면의 스토리보드Info.plist : 앱이 실행되는 데 필요한 정보를 저장하고 있는 파일
· iOS
Xcode를 사용한 iOS 개발 중 API KEY를 숨기는 방법에 대해 알아보자 네이버 영화 API를 사용하기 위해 발급받은 2개의 KEY값을 숨겨보겠다. X-Naver-Client-Id X-Naver-Client-Secret 1. Xcode -> New File -> Property List 파일 생성해주기 2. 생성된 plist 파일에 String 타입의 key를 만들어주고, value에는 값을 넣어준다. .gitignore에 해당 plist 파일을 세팅해주고 push를 하고 나면 처음에 들어간 임의의 값이 들어간 상태까지만 추적을 하기 때문에 먼저 임의의 value 값을 넣어준다. 이 때, value에 실제 키값을 바로 넣어주어도 상관은 없는데, 이 때는 .gitignore에 해당 plist 파일을..
kybeen
기록하레이