본문 바로가기

반응형

전체 글

(53)
[iOS/Swift] iOS 앱에서 데이터를 영구적으로 저장하기 위해 사용할 수 있는 방법들(UserDefaults, Keychain, Plist, FileManager, SQLite, Core Data, Realm)의 특징과 각각의 장단점, 적합한 사용 사례 iOS 앱에서 데이터를 영구적으로 저장하기 위해 사용할 수 있는 방법(UserDefaults, Keychain, Plist, FileManager, SQLite, Core Data, Realm)의 특징과 각각의 장단점, 적합한 사용 사례에 대해 알아보자. UserDefaults특징사용자의 기본 설정 데이터베이스에 접근하는 간단한 인터페이스 제공키-값 (key-value) 쌍 형태로 저장앱이 실행될 때 영구적으로 저장되며, 앱이 삭제되지 않는 한 데이터 유지Bool, Float, Double, Int, String, URL, Array, Dictionary 등 기본 데이터 타입을 쉽게 저장하고 검색할 수 있음. 다른 타입은 NSData로 아카이빙해야 함.내부적으로 Property List(.plist) ..
[iOS/Swift] UIKit에서 TableView와 CollectionView의 차이점은 무엇인가요? UITableView, UICollectionView공통점TableView와 CollectionView는 iOS 앱에서 데이터를 목록 형태로 표시하는 데 사용되는 UI 컴포넌트로 둘 다 스크롤 가능한 콘텐츠를 표시차이점특징 UITableView UICollectionView방향성기본적으로 단일 열(세로) 또는 단일 행(가로)의 선형 목록여러 열/행, 그리드, 원형 등 다양한 형태로 데이터 표현 가능복잡성단순한 목록 표시 및 섹션 구분에 적합복잡한 레이아웃과 다양한 시각적 표현에 적합레이아웃고정된 선형 레이아웃UICollectionViewLayout을 통해 매우 유연한 레이아웃 제공용도설정 화면, 이메일 목록, 뉴스 피드 등갤러리, 앱 스토어, 소셜 미디어 피드 등헤더/푸터섹션 헤더/푸터 지원섹션 헤더/푸..
REST API와 iOS에서의 네트워크 요청 및 응답 처리 방법 https://github.com/JeaSungLEE/iOSInterviewquestions?tab=readme-ov-file GitHub - JeaSungLEE/iOSInterviewquestions: 👨🏻‍💻👩🏻‍💻iOS 면접에 나올 질문들 총 정리👨🏻‍💻👩🏻‍💻iOS 면접에 나올 질문들 총 정리 . Contribute to JeaSungLEE/iOSInterviewquestions development by creating an account on GitHub.github.com 해당 깃허브의 면접 질문 중 14번 질문에 대해 공부를 했다. 14. REST API와 iOS에서의 네트워크 요청 및 응답 처리 방법에 대해 설명해주세요.REST의 제약 조건(Stateless, Cac..
[iOS/Swift] CollectionView, TableView 오류발생 프로젝트 도중 여러 오류가 발생했다.메뉴 CollectionView와 장바구니 TableView 둘 다 오류가 발생 했다.현재 페이징 O 버튼이 원래 3개였는데, 협업 도중 어디서 바뀐지는 모르겠지만 나중에 보니 2개로 되어있었다.블로그를 쓰고 있는 도중 pageControl 부분은 다른 분이 고치셨다고 한다. 하지만 아직 하나 더 남았다.원래 장바구니에 여러개 목록이 추가되어 스크롤이 가능한 상태일 때 장바구니에 메뉴를 추가하면 해당 위치로 스크롤이 자동으로 이동하게 구현했었는데, 어느새 그 기능이 동작안된다. 급하게 지피티를 이용하여 뷰를 작성해서 그런지 다시 고치려하니 코드도 잘 이해안되고 막막하게 느껴진다.CollectionView를 인터넷을 보며 공부하려 했는데 양이 왜이리 많은지 모르겠다.알고..
[iOS/Swift] UIStackView(arrangedSubviews: [ ]) 기존에 StackView에 subView들을 추가할 때 아래와 같이 따로 외부에서 .addArangedSubview()를 이용해 작성했었다.private lazy var scrollContentsVStack: UIStackView = { let stackView = UIStackView() stackView.axis = .vertical stackView.distribution = .equalSpacing stackView.alignment = .fill stackView.spacing = 24 return stackView}()[bookInfoView, dedicationView, summaryView, chaptersView].forEach { scrollCont..
[iOS/Swift] SwiftLint 적용해보기 (error: Sandbox: swiftlint(19427) deny(1) file-read-data) https://github.com/realm/SwiftLint GitHub - realm/SwiftLint: A tool to enforce Swift style and conventions.A tool to enforce Swift style and conventions. Contribute to realm/SwiftLint development by creating an account on GitHub.github.com SwiftLint는 Swift 코드를 일관된 스타일과 규칙을 적용해 주는 라이브러리다.이를 이번 프로젝트에 한번 적용해 보았다. 처음 설치할 때 나는 brew install swiftlint로 Homebrew를 이용하여 다운 받았었다. 설치 후 적용하기 위해서는 Targets -> ..
[iOS/Swift] addTarget()과 Objective-C 셀렉터(#selector) 먼저 #selector는 Objective-C 런타임에서 메서드를 동적으로 호출하기 위해 사용하는 것으로, 주로 addTarget(action:for:) 같은 UIKit 메서드에서 버튼 클릭 등의 이벤트를 특정 메서드와 연결할 때 사용된다. 이런건 알고 있었지만 프로젝트 도중 #selector 관련하여 오류가 생겼다. 현재 함수에서 .addTarget() action: 부분에 함수 입력 시 매개변수를 받아, 각 버튼 별로 title과 titleColor, backgroundColor를 바꾸고 싶었다.func addSeriesButtons(_ seriesCount: Int) { for num in 1 ... seriesCount { let seriesButton: UIButton = { ..
[iOS/Swift] UIKit 코드베이스 UIView 분리하기 (Unable to simultaneously satisfy constraints...) 오늘은 기존에 파일 한 곳에 전부 작성된 뷰들을 분리하는데 하루를 보냈다.. 아래처럼 뷰를 일단 분리하였다.MVVM을 이용하려고 ViewModel 파일을 임시로 만들었지만, 아직 MVC도 제대로 다룰줄 몰라 튜터님과 상담 후 일단 이번 과제에서는 MVC를 사용하기로 결정했다. 이번에 알게됐는데 View를 나누면 각 View 파일에 아래와 같은 코드를 작성해야 한다고 한다.override init(frame: CGRect) { super.init(frame: frame) configureLayout()}required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented")} CGRect 부분 in..

반응형