UserDefaults를 사용하여 로그인 cache 정보를 저장하는 방법입니다. UserDefaults는 Local Database로Login credentials, tokens 등과 같은 소량의 데이터를 저장하기 위해 사용됩니다. Local DB를 저장하는 방식으로는 CoreData도 존재합니다.CoreData와 Userdefaults의 차이점으로는CoreData는 여러 속성과 개체간의 관계를 가진 복잡한 데이터 모델을 저장하도록 설계되어있습니다. CoreData와 차이점Userdefaults는 간단한 string값을 저장하는 반면, CoreData에는 array, dictionary를 저장 할 수 있습니다.Userdefaults는 thread - safe이며 멀티 스레드에 별다른 문제 없이 접근해도 ..
이런 이미지의 흰색 배경의 말풍선을 사용하려고 합니다. 만약 여기서 이미지의 width만 늘어나게 될 경우 cornerRadius의 값이 유지되지 못하고 깨지게 됩니다. 이를 Image Slicing의 Stretch 기능으로 문제를 해결 할 수 있습니다. 안드로이드에서는 9-Patch라고 하더라구요 우선 Asset에서 특정 부분만 늘리고자 하는 이미지를 선택해준 뒤, Show Overview 대신에 Editor의 Show Slicing를 체크합니다. 그러면 이렇게 가로 세로 영역을 잡을 수 있는데, 가로만 늘이고 싶다면 가로만, 가로세로 둘다 잡아서 늘이고 싶다면 둘다 선택해주시면 됩니다. 늘어나게 하고 싶은 영역을 위 이미지 처럼 선택합니다. 마지막으로 이미지 contentMode에서 늘어나게될 영역이..
이렇게 디자이너가 -3%의 수치로 자간을 줬을때, code로 UILabel의 자간을 수정하는 방법입니다. 디자이너입장에서 이런 디테일을 아주 중요시 하기때문에 개발자의 눈에는 별 차이가 없더라도 그냥 넘어갈 수 없습니다~ self.font.pointSize 로 UILabel마다 다른 font 사이즈에 접근해줄 수 있어요. (default는 -3%) extension UILabel { func addCharacterSpacing(_ value: Double = -0.03) { let kernValue = self.font.pointSize * CGFloat(value) guard let text = text, !text.isEmpty else { return } let string = NSMutableAt..
소셜커머스에서 자주 보이는 디자인인 TableView 내부에 가로 스크롤의 CollectionView Layout을 만들어 보겠습니다. 한마디로 요약하자면 tableViewCell에 horizotal collectionView를 넣어주면 됩니다. collectionView에는 당연히 collectionViewCell을 넣구요.. 먼저 UI 부터 보면 우선 tableView에 2개의 콜렉션 뷰를 넣어주었습니다. 하나는 1xN 가로 콜렉션뷰이고 하나는 2xN 세로 콜렉션뷰를 넣어주었습니다. 우선 저는 xib로 각각의 콜렉션뷰 선언해주었고, 하나의 테이블뷰에 2개의 콜렉션뷰셀 Nib와 셀ID를 등록하여 연결해주었습니다. cell을 register을 해주고, cellForRow로 cell을 row에 따라 cel..
modal 형태의 secondVC에서 값을 받아 dismiss 될 때, firstVC에서 secondVC의 data를 사용하는 방법입니다. (RxSwift 를 사용하여..) 예제로 만들어서 설명하겠습니다. secondVC에만 존재하는 jh 라는 데이터를 firstVC로 넘겨주고 싶어요. 그럼 이렇게 가능 합니다. 1. secondVC에서 dismiss되기 전 넘겨주고 싶은 데이터를 secondVC에 존재하는 서브젝트(secondVC의 viewModel)에 쏴주기 2. firstVC의 prepare에서 secondVC에 존재하는 Subject(secondVC의 viewModel)를 구독하여 데이터 넘겨 받기 우선 첫번째 VC입니다. 이렇게 생겼어요. 모달띄우기 버튼을 누르면 secondVC가 m..
News의 api data를 parsing하여 SwiftUI list에 뿌려주기! 를 해볼건데, 기존 Swift에는 없는 SwiftUI만의 바인딩 특성을 사용하여 데이터를 뿌려보겠습니다. https://newsapi.org/ 의 뉴스 api로 작업해보겠습니다. SwiftUI에서는 내장되어있는 combine이라는 언어의 observableObject를 사용하여 fetch한 data를 뿌려주는 방법입니다. 소스코드는 맨밑에 깃헙주소있어요 data를 가져오는 RequestAPI를 구현합니다. import Foundation class RequestAPI { static let shared = RequestAPI() private init() { } private let apiKey = Bundle.main.o..
api key를 git에 노출시키지 않도록 하는 방법입니다. 1. api key를 config에 담아주고 2. config파일을 gitignore추가하여 git에 업로드 되지 않도록 합니다. 우선 1. api key를 config에 따로 빼기입니다. config 파일을 생성해줍니다. 저는 Secrets으로 이름을 지어줬습니다. 파일 위치는 root 바로 밑에 위치시켜줍니다. 그러고 내부에 Secrets.xcconfig 내부에 API_KEY = ~~ 작성해줍니다. 이렇게 뒤에 api key를 적어주고, Secrets.xcconfig 파일을 사용할 수 있도록 Project Info에 Secrets 파일을 추가합니다. Configurations > Debug, Release에 Secrets를 추가해줍니다. (..
부산의 사회복지 프로그램에 대한 정보를 제공하는 어플입니다.지역을 선택하여 해당 구에서 지원하는 사회복지 프로그램들을 확인하세요. 간편한 UI/UX 어플로 정보를 제공하면 사회복지가 필요한 사람들이좀 더 쉽게 이용할 수 있을거라 생각하여 제작하게 되었습니다. 부산 사회복지 공공 API를 활용하여 제작하였습니다. (https://www.data.go.kr/data/15067334/openapi.do) MVC 디자인 패턴을 채택하고 있고, request API로 Alamofire 라이브러리를 사용하였습니다.UserDefault에 선택한 지역구의 정보를 저장하여 새로 켰을때 선택VC를 스킵합니다. 복지 센터의 전화 기능과 위치 정보를 제공합니다. 앱스토어 링크 : https://apps.apple.com/kr..
테이블뷰의 스크롤을 맨위로 올렸을 때, navigationbar의 title을 large로 설정하는 방법입니다.(자꾸 small로 나와서) 우선 Large Title 설정방법입니다. 이렇게 설정해주면 Large 타이틀로 잘 나오는 모습입니다.. largeTitleDisplayMode의 값으로 .automatic 을 줘서, 스크롤 하면 small 로 바뀝니다. 이렇게 말이죠. 이제 scroll to top 하는 방법입니다. tableView.scrollToRow(at: IndexPath(row: NSNotFound, section: 0), at: .top, animated: false) 동작이 이루어지는 곳에 넣어주면 되겠죠? row에 0 을 해도 되지만 그러면 셀이 존재하지 않을 땐 에러가 떠요. 그래서..
3*N으로 콜렉션뷰의 cell을 나열하는 방법입니다. 첫번째. (셀간 간격 존재o, 마진값 존재x) 검정색 테두리와 초록색 셀 사이의 간격이 존재하지 않는 좌우로 딱 붙은 나열 방식입니다. / MARK: - FlowLayout // 마진x, 여백o extension ViewController: UICollectionViewDelegateFlowLayout { //1 func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { let interval:CGFloat = 3 let width:..
- Total
- Today
- Yesterday
- swift urlsession refactoring
- filemanager excel read
- swift queryitem encode
- swift network 공통화
- swift urlsession 공통화
- readysay
- swift network module
- rag llm pdf
- swift urlsession network module
- swift urlcomponent encode
- llm pdf rag
- 엔디소프트 레이세이
- swift 엑셀 가져오기
- swift filemanager get excel
- rag 기반 llm
- swift get excel
- 레디세이 어플
- focus timer 어플
- swift filemanager excel
- llm csv
- swift urlsession module
- 레디세이
- swift 엑셀 읽기
- swift 네트워크 모듈화
- swift network refactoring
- deep timer
- swift 자간
- rag 기반 llm 챗봇
- swift excel read
- chatgpt rag llm
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |