iOS

· iOS
문제 API 호출을 하려고 하는데 문제 없는 URL String을 URL 객체로 변환하니까 자꾸 nil이 반환되는 문제가 있었다. 저번에는 됐는데 왜 된거지 암튼 검색해보니 주소에 한글이나 스페이스 등이 들어갈 때 nil이 될 수 있다고 한다. 역 이름 인자로 한글이 들어가기 때문에 이런 문제가 생겼던 것 같다. 해결 ➡️ 인코딩을 해주면 해결할 수 있다. .addingPercentEncoding을 사용하면 인자로 지정된 CharacterSet에 명시되어 있지 않은 모든 Characters를 백분율로 인코딩된 문자로 바꿔준 뒤, String? 값으로 반환해준다. let encodedURL = arrivalUrl.addingPercentEncoding(withAllowedCharacters: .urlQue..
· 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..
· iOS
원래 SwiftUI 프로젝트에(UIKit도 똑같을듯) .mlmodel 파일을 추가하면 알아서 해당 모델의 클래스를 만들어주고, 해당 클래스의 인스턴스를 만들어서 사용할 수 있습니다. 그런데 WWDC 스스챌 때문에 플레이그라운드 앱으로 프로젝트를 생성하고(.swiftpm) 모델 파일을 추가해보면 모델의 클래스를 만들어주지 않습니다;;;; 때문에 패키지 매니저가 해당 모델을 찾아서 불러올 수 있도록(?) 설정을 해주어야 합니다. 큰 흐름은 다음과 같습니다.💡 .mlmodel 파일 추가 → 모델 파일 컴파일 → 패키지 매니저에 타겟 추가 → 불러오기 1 . 먼저 프로젝트 디렉토리에 Resources 라는 이름의 디렉토리를 직접!! 만들어줍니다. 2. 만들어준 Resources 디렉토리의 안에 .mlmodel ..
· 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 파일을..
· iOS
REST API 통신을 간편하게 하도록 지원해주는 라이브러리인 Alamofire를 사용해보기 위해 라이브러리를 설치해보았다. 1. 먼저 코코아팟(CocoaPods)을 설치해준다. 코코아팟이란 스위프트 프로젝트의 종속성 관리자이다. sudo gem install cocoapods 2. 터미널 창에서 프로젝트 폴더로 이동해준 뒤 pod을 적용해준다. pod init ※ 만약 pod 적용 중 FrozenError 발생 시에는 다음과 같이 루비 업데이트를 해준다. sudo gem update xcodeproj 잘 적용이 되었다면 아래와 같이 프로젝트 폴더에 Podfile 파일이 생성될 것이다. 3. 생성된 Podfile 파일에 아래 내용을 추가해준다. pod 'Alamofire', '~> 5.5' 4. 라이브러..
· iOS
뷰 컨트롤러 사이에 값을 주고받는 방식은 2가지 개념으로 나누어진다. 직접 전달 방식 (동기 방식) 간접 전달 방식 (비동기 방식) 직접 전달 방식 (동기 방식) 뷰 컨트롤러 --> 뷰 컨트롤러로 데이터를 직접 전달하는 방식이다. 주로 영속적으로 값을 저장할 필요가 없는 화면 전환 시에 사용된다. ex) 선택 카테고리 값을 전달받는 쪽의 뷰 컨트롤러가 전달받을 값의 명세를 모두 파악하고 이를 대입할 변수를 미리 생성해 두어야 한다. [ 전달 과정 (VC1 --> VC2) ] VC1에서 VC2로 전달할 값을 준비한다. VC2에서는 값을 대입받을 프로퍼티를 정의한다. VC1에서는 VC2의 인스턴스를 직접 생성하거나, 이미 생성되어 있는 인스턴스의 참조를 읽어온다. VC1에서는 2. 에서 정의한 VC2 인스턴..
· iOS
앞서 공부한 세그웨이를 사용해서 화면을 전환할 경우 화면 복귀를 할 때는 2번째 뷰 컨트롤러에서 1번째 뷰 컨트롤러로 향하는 세그웨이를 추가해주면 될 것이라고 생각할 수 있다. 하지만 이렇게 할 경우 오류가 발생한다. 세그웨이는 목적지가 되는 뷰 컨트롤러의 인스턴스를 자동으로 생성해준다. 따라서 2번째-->1번째 뷰 컨트롤러로 새로운 세그웨이를 연결하면 기존에 존재하면 1번째 뷰 컨트롤러의 인스턴스 말고도 추가적으로 새로운 인스턴스가 하나 더 생기게 된다. 이렇게 되면 동일한 뷰 컨트롤러가 중복되기 때문에 앱에서 오류가 발생할 수 있다. 일반적으로 iOS에서 뷰 컨트롤러의 인스턴스는 한개 이상 존재해서는 안 된다!! 세그웨이에서 Unwind를 구현할 때도 앞에서 공부한 화면 복귀용 메소드를 이용할 수 있..
kybeen
'iOS' 카테고리의 글 목록 (2 Page)