일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- uitableview
- Observable
- tableView
- 클린 코드
- MVVM
- ios
- combine
- UITextView
- 스위프트
- 리펙토링
- 리펙터링
- collectionview
- 애니메이션
- 리팩토링
- rxswift
- Xcode
- uiscrollview
- map
- SWIFT
- swiftUI
- UICollectionView
- swift documentation
- ribs
- RxCocoa
- HIG
- Refactoring
- Clean Code
- Protocol
- Human interface guide
- clean architecture
- Today
- Total
목록iOS 응용 (swift) (723)
김종권의 iOS 앱 개발 알아가기
비즈니스 모델을 UI 모델로 변경하기 만약 MVVM을 사용한다면, API호출을 통해 얻은 데이터들을 ViewModel에서 받아오고 UI 쪽으로 다시 전달해주어야 하는데 정석으로는 UI / Domain / API 세 계층 모두 모델을 다르게하여 의존성을 줄이는 것이 이론적으로 좋은데 이 때 모델을 다르게하면 model간 변환하는 로직이 필요 Domain에서 UI모델로 데이터를 변환할 때, Factory 패턴을 사용하면 로직 분리가 용이 Factory라는 의미는 단순히 UI모델로 변경하는 작업 뿐만이 아닌, UI모델에서 필요한 값들도 같이 넣어주도록 구현 만약 api로부터 (age: 20)와 같은 값을 가져오는 경우 UI에서는 20살이라고 표현해야할 때 Factory에서 "20"과 "살"을 결합하여 생성하는..
url 파싱 아래와 같은 url이 있을 때, a1_b, a2같은 값을 파싱하는 방법? "abc://host?a1_b=1&a2=2" 보통 Swift의 Codable을 사용하여 API의 응답값들을 미리 struct로 정의하여 표현하는데 url 파싱도 이렇게 처리가 가능 // Codable을 사용한 API 응답 파싱 예시 struct SomeResponse: Codable { let age: Int let name: String } 구현 목적 딥링크를 구현하다보면 여러 url을 처리해야하는데, API의 응닶값처럼 url도 Codable을 준수하는 struct모델을 만들어서 정의되도록 구현하는 것이 목적 ex) 아래와 같은 url이 있을 때, parameter 2개에 대한 모델을 따로 정의하고 싶은 경우? le..
parameter packs 개념 Swift 5.9에서 등장 Swift 5.9미만에서는 아래와같이 여러개의 parameter가 있을때 이 parameter 개수만큼 그대로 튜플로 리턴해주고 싶은 경우 일일이 써주어야하는 번거로움이 존재 parameter packs를 이용하면 아래처럼 한줄로 표현이 가능 또 기존에는 여러개의 parameter를 갖는것은 ... 으로 받을 수 있지만 return type에는 ... 연산자를 사용하지 못함 func f1(v1: Int) -> Int { v1 + 1 } func f2(v1: Int, v2: Int) -> (Int, Int) { ((v1 + 1), (v2 + 1)) } func f3(v1: Int...) -> (Int...) { // Variadic parame..
Apple ID 인증 에러 아래와 같은 에러는 Xcode에서 Apple ID 로그인이 실패했다는 의미 만약 예전에 Xcode에 로그인을 하고 그 이후에 Apple ID 패스워드를 바꾸었을때 아래같은 에러가 발생 가능 Xcode > settings (cmd + ,) > Accounts 탭 > Sign In Again을 클릭하여 다시 로그인 할 것 성공하면 빨간 에러 메시지가 사라지고 이제 정상동작
1. UIActivityViewController 인터페이스 제공 방법 (share extension, share sheet) - Share Extension 생성까지 2. UIActivityViewController 인터페이스 제공 방법 (share extension, share sheet) - UI 구현 3. UIActivityViewController 인터페이스 제공 방법 (share extension, share sheet) - 데이터 교환 데이터 교환 방법 데이터 교환이란? 특정 앱에서 text를 share extension으로 공유해줄때 text를 받는 방법? ex) 유튜브 앱에서 특정 글을 인스타그램으로 공유할 때, 인스타그램의 share extension 쪽에 코드 구현이 필요 인스타그램과..
animationImages로 gif 재생 방법 animationImages는 UIImageView의 프로퍼티이고 이미지 배열을 넣어서 duration, repeatCount를 설정한 후 startAnimating()으로 실행이 가능 * animationImages 자세한 개념은 이전 포스팅 글 참고 animationImages를 알면 연속으로 재생이 가능하기 때문에 gif파일을 불러와서 frameCount와 images 배열을 얻어내는것이 목적 파일을 읽어오는 방법은 애플의 ImageIO를 사용 ImageIO 관련 자세한 내용은 이전 포스팅 글 참고 ImageIO의 CGImageSource를 사용하면 frameCount와 cgImage 가져오기가 가능 예제 - gif 재생시키기 gif 이미지 준비 im..
animationImages 개념 UIImageView가 가지고 있는 UIImage 배열 값 animationImages은 UIImageView의 프로퍼티 @available(iOS 2.0, *) open class UIImageView : UIView { public init(image: UIImage?) ... open var animationImages: [UIImage]? // default is nil } 이 값을 사용하여 여러가지의 이미지들을 animationDuration동안 aimationRepeatCount만큼 반복해서 보여주기가 가능 duration, count 옵션을 설정한 후 startAnimating()하여 이미지들을 표출 ex) animationImages에 circle이미지와 ..
UniformTypeIdentifiers 개념 파일 형식 및 데이터 유형을 식별하기 위한 표준을 의미 다양한곳에서 파일 형식을 식별하고 처리가 필요한데 일종의 규격이므로 개발자들이 파일 형식을 관리하고 다루는 데 있어서 유용한 표준 사용처 앱에서 특정 데이터 포멧을 사용할 때, info.plist에 등록하는 형태로도 사용 애플의 파일 시스템 object들을 식별할 수 있는 단위로 사용 OS단에서 파일등의 데이터들을 주고받을때 확장자 구분이 필요할 경우가 있는데, 이럴 때 UTType.으로 접근 UTType의 static 프로퍼티로 선언되어 있고, id값을 얻어오려면 아래처럼 접근 id값은 일반적으로 public prefix를 붙인 형태 share sheet에서 UTType을 활용하는 예제는 이 포스팅 글..