iOS/Swift

· iOS/Swift
이 글을 읽고 이해한 내용을 적었습니다 github에 올리면 안되는 APIKEY 숨기기 - iOS 화면과 같이 간단한 프로젝트를 바탕으로 설명하겠습니다. 프로젝트는 여기 링크로 가시면 상세 코드 및 화면 구성을 확인하실 수 있습니다! 화면은 아래와 같이 간단하게 구성하였습니다. 우 nareunhagae.tistory.com API 연결을 하다보면 사용자의 고유 Key 값이 필요할 때가 종종(아니 거의 대부분..) 있지요 이런 고유한 값은 공개되면 개인정보가 노출되는 것과 다름 없어요 그리고 타인이 무단으로 나의 Key 값을 사용하게 될 수도 있구요 그런걸 방지하기 위해서 프로젝트에서 API KEY를 숨기는 방법 중, plist를 사용하는 방법이 제일 좋아보였습니다 나중에는 xcconfig, shceme ..
· iOS/Swift
(해당 포스팅은 iOS 14 기준 개발 프로젝트 내용입니다) ❓ 위치 데이터에 관한 이야기 위치 데이터는 민감한 정보이고, 사용자의 개인정보 보호와도 큰 관련이 있죠 모든 사용자는 자신의 개인정보를 통제할 수 있어야 하기 때문에 앱이 해당 정보에 대한 사용 권한 승인을 (사용자에게) 받기 이전까지는 데이터를 사용할 수 없게 차단해야 합니다! 위치 데이터가 필요한 시점에 사용자에게 승인을 요청하고 반응한 승인 상태를 저장하여 알맞게 활용합니다 만약 권한 거부를 선택한다면, 승인을 요청하는 메세지는 더 이상 띄우지 못한답니다 저같은 경우, 날씨 앱을 만들어보고 있었기 때문에 앱 진입 시 스플래시 화면을 띄우고, 그 화면이 끝나면 위치 데이터를 요청합니다 이외에는 버튼을 누르면 위치 데이터 요청을 안내하는 방..
· iOS/Swift
iOS Splash 메인화면 로딩 페이지 iOS 스플래쉬 화면 LaunchScreen.storyboard 코드 베이스 구현 이게 다 뭐냐고요? 제가 스플래시 화면 넣고 싶어서 검색했던 키워드 입니다... (참고로 안드로이드에서 스플래시라고 부르고, iOS는 런치 스크린입니다) 당연히 스토리보드로 작업하면 편했겠죠... 그러나 저는 코드 베이스로 UI를 구현하고 있기 때문에 방법을 찾아 헤맸습니다 해당 스플래시 화면에 로고를 띄워줄 목적으로 정보를 찾아보다가 이런 정보를 발견했습니다 https://developer.apple.com/design/human-interface-guidelines/launching#Launch-screens Launching | Apple Developer Documentati..
· iOS/Swift
🩵 Core Data란? Core Data는 앱의 데이터를 관리하는 똑똑한 비서같은 존재입니다! 앱에서 사용하는 모든 정보, 즉 사진, 메모, 설정 등을 안전하게 보관하고 필요할 때 꺼내 주는 역할을 하지요. 마치 우리 뇌의 기억 장치와 같은 존재라고 생각하면 쉽습니다. 1. 사용하기 쉽다 복잡한 데이터베이스 관리를 숨겨서 간단한 코드로 데이터를 저장하고 관리할 수 있도록 도움 마치 레고 블록처럼 다양한 데이터를 쉽게 조립하고 분해할 수 있음 2. 안전하고 신뢰할 수 있다 데이터 손실을 막기 위해 백업 기능을 제공하고, 여러 기기에서 동일한 데이터를 사용할 수 있도록 도움 앱이 갑자기 꺼지더라도 저장된 데이터는 안전하게 보호 3. 다양한 기능을 제공한다 오프라인에서도 데이터를 사용할 수 있음 인터넷 연결..
· iOS/Swift
🩵 CoreData의 삭제를 구현하던 중... 기존에는 단순하게 생각해서 filter라는 고차함수를 사용해서 해당하는 요소를 필터링해주었습니다. let filteredData = todos.filter { String(describing: $0.id) == id }[0] context.delete(filteredData) 기본적인 구현을 다 끝내고 코드를 정리하던 중, 한 가지 의문이 들었습니다. filter()는 검색된 값을 배열에 담아 반환해줍니다. 그런데 어차피 상세페이지에서만 삭제가 가능한데, 해당하는 요소는 1개인데도 배열로 반환시킬 필요가 있나? 🩵 filter()와 first()의 차이점 filter() 메서드는 주어진 조건을 만족하는 요소만을 새로운 배열로 반환합니다. 반면, first()..
· iOS/Swift
🩵 아키텍처란? 아키텍처는 시스템 전체를 이해하고 설계하기 위한 체계적인 방법이며, 기본적으로 시스템의 구조와 조직을 결정하는 과정입니다. 다양한 측면에서 시스템을 분석하고 설계함으로써 특정 문제나 요구사항에 대한 효과적인 해결책을 찾아냅니다. ✔️ 구조 설계 아키텍처는 기본적으로 컴포넌트와 모듈의 구조를 결정합니다. 이는 각각의 역할과 책임을 명확히 정의하고, 이들이 어떻게 상호 작용하는지를 결정하는 과정을 포함합니다. ✔️ 상호 작용 및 데이터 흐름 컴포넌트 간의 상호 작용과 데이터의 흐름을 명확히 정리합니다. 이는 시스템의 효율성과 일관성을 유지하는 데 중요한 역할을 합니다. ✔️ 기능, 성능, 보안, 확장성, 유지보수성 고려 아키텍처는 시스템이 수행해야 하는 기능을 충족시키는 것뿐만 아니라, 성능..
· iOS/Swift
2024.01.04 - [iOS/SWIFT] - [Swift] 네트워크 통신(1) - URL과 REST API 🩵 URLSession 데이터를 다운로드하거나 업로드하고, 웹 서버와의 통신을 위한 HTTP 요청을 생성하고 처리하는 데 활용됩니다. URLSession은 비동기 방식으로 작동하며 네트워크 작업이 완료되면 클로저를 사용하여 결과를 처리합니다. ✔️ GET import Foundation // URLSession 인스턴스 생성 let session = URLSession.shared // URL 생성 if let url = URL(string: "https://api.example.com/data") { // URLSessionDataTask를 사용하여 비동기적으로 데이터 요청 let task =..
· iOS/Swift
🩵 URL URL은 웹 상에 존재하는 자원의 위치를 가리키는 주소입니다. 자원은 문서, 이미지, 동영상 등 어떤 것이든 될 수 있어요. URL은 특정 자원에 대한 요청을 식별하고 전달하는 데 사용됩니다. Protocol 프로토콜 Domain 도메인 Port 포트번호 Path 경로 Query Parameters 쿼리 매개변수 URL은 해당 5가지로 구성이 되어 있습니다. ✔️ 프로토콜 http : 보안 없는 통신 https : 보안된 통신 (SSL / TLS 암호화 사용) 프로토콜은 클라이언트와 서버 간의 통신 방법(규칙)을 지정합니다. ✔️ 도메인 도메인은 API 서버가 호스팅되는 서버의 주소입니다. API 서버가 위치한 서버의 주소를 도메인으로 나타낸다는 것을 의미합니다. 도메인은 일반적으로 서버의 I..
· iOS/Swift
🩵 Delegate Pattern의 조건 델리게이트 패턴은 객체간의 상호 작용을 하기 위해서 사용됩니다. A객체가 B객체에게 이벤트나 데이터, 특정한 동작을 위임하는 등 말이죠. 이때, 프로토콜을 채택하는 객체가 클래스 타입이라면 참조에 의한 전달이 이루어지게 됩니다. 참조 타입은 메모리 상에서 한 객체를 여러 곳에서 공유할 수 있으므로, 여러 객체가 동일한 델리게이트를 참조하고 해당 델리게이트를 통해 통신할 수 있습니다. 반면 값 타입(구조체, 열거형 등)은 복사에 의한 전달이 이루어지기 때문에 여러 객체가 동일한 델리게이트를 참조하는 것이 어렵습니다. 값 타입의 특성 상 복사본이 만들어지기 때문입니다. 따라서 델리게이트로 사용되는 프로토콜을 정의할 때, 해당 프로토콜을 채택하는 객체는 반드시 참조 타..
· iOS/Swift
UIStackView Setting let stackView = UIStackView() stackView.axis = .horizontal stackView.alignment = .trailing stackView.distribution = .fillEqually stackView.spacing = 15 stackView.heightAnchor.constraint(equalToConstant: 65).isActive = true axis 스택뷰의 정렬 방향을 결정한다 horizontal (수평) vertical (수직) alignment 스택뷰 내부 서브뷰를 어떻게 정렬할 지 결정한다 leading (스택뷰의 시작 부분) top (스택뷰의 상단) center (스택뷰의 가운데) trailing (스택뷰..
· iOS/Swift
🌻 reloadData() table view가 변경되었다고 해서 cell 이 자동으로 추가되는 건 아니다 우리가 테이블 뷰를 업데이트 시켜주어야 하는데, 이럴 때 간단하게 사용할 수 있는 메소드가 reloadData()이다 func reloadData() https://developer.apple.com/documentation/uikit/uitableview/1614862-reloaddata reloadData() | Apple Developer Documentation Reloads the rows and sections of the table view. developer.apple.com 리로드 데이터는 셀, 섹션 헤더 및 바닥글, 인덱스 배열 등 테이블 구성에 사용된 모든 데이터를 다시 로드한다..
· iOS/Swift
To do check button todolist를 만들던 도중, 투두 완료 여부를 체크하기 위한 부분이 필요했다. 기본적으로 내장된 CheckMark를 사용할 지 커스텀해서 만들지 고민했는데 커스텀하는게 더 이쁜것 같아서 하트로 만들어봤다. button tag delegate closure 이렇게 세가지 방법으로 구현할 수 있는데, 나는 간단히 모양을 보고 싶었던 것이기 때문에 tag를 사용해서 구현해보았다. 데이터 안정성을 고려하면 2번) delegate protocol을 만들어서 처리하는 게 맞는 것 같다. button.tag를 사용한 tableviewcell 안에 있는 button action cell.todoCompleteButton.tag = indexPath.row cell.todoCompl..
YEN_
'iOS/Swift' 카테고리의 글 목록 (2 Page)