일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Observable
- uitableview
- UICollectionView
- collectionview
- combine
- 클린 코드
- 애니메이션
- map
- Refactoring
- rxswift
- ribs
- swiftUI
- swift documentation
- Protocol
- 리팩토링
- 리펙토링
- Human interface guide
- MVVM
- uiscrollview
- SWIFT
- Clean Code
- 스위프트
- UITextView
- ios
- clean architecture
- Xcode
- 리펙터링
- HIG
- RxCocoa
- tableView
- Today
- Total
목록SWIFT (948)
김종권의 iOS 앱 개발 알아가기
isMultiple(of:) 연산자 나누어 떨어지는지 판단하는 연산자 // bad print(6 % 3 == 0) // true // good print(6.isMultiple(of: 3)) // true compactMapValues 연산자 딕셔너리의 value값을 mapping하는 연산자 let dictionary = ["a": "1", "b": "2", "c": "three"] // bad var convertedDictionary1 = [String: Int]() dictionary .forEach { if let val = dictionary[$0.key], let int = Int(val) { convertedDictionary1[$0.key] = int } } print(convertedDi..
1. map과 flatMap의 차이 - CollectionType에서 쓰임 CollectionType에서 접근: array와 같은 각 개별 요소에 접근하여 변화를 주는 것 만약 Element중에 Optional값이 있다면 flatMap은 unwrap을 해주고, map은 unwrap을 해주지 않음 단, flatMap은 deprecated되어 compactMap 사용 // 'flatMap' is deprecated: Please use compactMap(_:) for the case where closure returns an optional value let c = [1, 2, Optional(3)] .flatMap { $0 } print(c) // [1, 2, 3] 2. map과 flatMap의 차이 ..
1. Privacy manifest 개념, 사용해야하는 이유 (PrivacyInfo.xcprivacy) 2. Privacy manifest 적용 방법 (PrivacyInfo.xcprivacy) 3. Privacy manifest의 privacy report 사용 방법 Privacy Report 란? Xcode에서 앱을 빌드하여 앱스토에 제출 할 때, Xcode15에서는 앱 프로젝트의 모든 개인정보 보호 목록을 집계하고 선언된 데이터 사용을 요약하는 개인정보 리포트 생성이 가능 이 내용은 모두 PrivacyInfo.xcprivacy에 작성된 내용을 바탕으로 .pdf파일로 생성 Privacy Report 사용해보기 Xcode15 > Product > Archive 선택 빌드가 완료되면 목록에서 빌드된 프로..
1. Privacy manifest 개념, 사용해야하는 이유 (PrivacyInfo.xcprivacy) 2. Privacy manifest 적용 방법 (PrivacyInfo.xcprivacy) 3. Privacy manifest의 privacy report 사용 방법 Prvacy Manifest 작성 Xcode > 파일 생성 > privacy 검색 > App Privacy 선택 생성된 형태 손바닥 모양의 아이콘으로 되어 있고, plist처럼 표출 (최초 만들면 App Privacy Configuraton 키값만 있고 value값은 없으므로, 편의를 위해 유명한 라이브러리인 Alamofire에 어떻게 작성되어 있는지 확인) Alamofire깃을 clone하고 프로젝트를 열어 PrivacyInfo 파일을 확..
1. Privacy manifest 개념, 사용해야하는 이유 (PrivacyInfo.xcprivacy) 2. Privacy manifest 적용 방법 (PrivacyInfo.xcprivacy) 3. Privacy manifest의 privacy report 사용 방법 Privacy manifest 란? 앱을 사용하는 사람들로부터 연락처나 개인 정보를 수집할 때 왜 수집하는지 기입하는 것 애플에서는 2024년 봄부터 앱 심사때 privacy manifest 내용을 확인 왜 privacy manifest를 강제화하는지? 일종의 개인 정보 보호 보고서라고 할 수 있음 개발자와 사용자에게 명확하지 않은 방식으로 사용자 개인 정보 보호에 영향을 미칠 가능성이 있을 수도 있음 개인정보 매니페스트 파일을 제공하여 앱..
protocol 준수하는 모델 넘기기 ViewController에서 viewModel로 SomeModelable을 준수하는 모델을 넘겨야 하는 경우? 단, SomeModelable을 준수하는 모델은 여기서밖에 사용하지 않음 protocol SomeModelable { var a: Int { get } var b: String { get } } class ViewController: UIViewController { let viewModel = ViewModel() override func viewDidLoad() { super.viewDidLoad() viewModel.configure(model: /*여기!*/) } } class ViewModel { func configure(model: SomeMo..
tableView에 자동으로 설정되는 inset contentInsetAdjustmentBehavior 값은 os에서 자동으로 safe area를 고려하여 설정되는 getter 프로퍼티 open class UIScrollView : UIView, NSCoding, UIFocusItemScrollableContainer { @available(iOS 11.0, *) open var adjustedContentInset: UIEdgeInsets { get } ... } 이 값을 직접 set해줄수는 없기 때문에 "contentInsetAdjustmentBehavior"를 사용하여 조절이 가능 open class UIScrollView : UIView, NSCoding, UIFocusItemScrollableC..
UILabel의 높이 가져오는 경우 UILabel의 크기를 뷰가 다 그려지기 전에 static하게 알아와야하는 경우? UITableView와 UITableViewCell을 사용할때, 뷰가 다 그려지기 전에 모든 Cell의 크기를 알아와야하는 경우? (이때 만약 UILabel만 동적으로 변한다면 UILabel의 높이를 구해야하는 상황) UILabel의 높이 구하는 방법 sizeToFit()을 사용하여 구현 이 값을 사용하면 뷰의 내부 content크기에 맞게 즉각 계산됨 UIView의 extension 메서드이므로 UIView 계열은 모두 사용 가능 extension UIView { ... open func sizeToFit() } 알아내려는 UILabel의 속성을 그대로 주고 (text, numberOf..