전체 글

 iOS developer.
· iOS/Swift
basicText는 아래와 같이 modifier들을 사용가능.struct SwiftUIView: View {    var body: some View {        Text("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus tempus sem at congue varius. Nunc vulputate purus eros, vitae venenatis turpis blandit in.")            .bold()     // 볼드체            .italic()   // 이텔릭            .strikethrough(true, color: .blue)  // 취소선            .underline(true,..
· iOS/Swift
SwiftUI의 뷰 계층에서 UIKit을 사용하기 위한 방법으로 UIViewRepresentable, UIViewControllerRepresentable 을 제공. (https://swifty-cody.tistory.com/44) 반대로 UIKit 뷰 계층에서 SwiftUI를 사용하기 위한 방법으로 UIHostingViewController를 제공함. https://developer.apple.com/documentation/swiftui/uihostingcontroller UIHostingController | Apple Developer DocumentationA UIKit view controller that manages a SwiftUI view hierarchy.developer.apple...
· Dev Terms
Clean Architecture여러가지 아키텍처들이 있지만 이들의 공통적인 목표가 있음.프레임워크에 독립적일 것.Testability. 비즈니스 규칙은 UI, DB, 웹 서버 또는 기타 외부요소 없이 테스트 가능.UI와 독립적. 시스템의 나머지 부분을 변경하지 않고도, UI를 쉽게 변경할 수 있음.(예를 들어, 비즈니스 규칙을 변경하지 않도고 웹 UI를 콘솔 UI로 교체 가능)DB와 독립적. 비즈니스 규칙 DB에 바인딩되지 않음.외부 기관으로부터 독립적. 실제 비즈니스 규칙은 외부 세계에 대해 전혀 알지 못함. 아래의 다이어그램은 이러한 모든 아키텍처들을 하나의 실행가능한 아이디어로 통합하기 위한 시도.  Dependency Rule동심원의 바깥에서 안쪽으로 들어갈수록 고수준.바깥쪽 원은 매커니즘, 내..
· iOS/Swift
유니코드와 UTF전 세계 모든 문자를 전산에서 일관된 표현으로 다룰 수 있도록 설계된 산업표준. 유니코드를 실제로 저장하는 방식은 UTF. 유니코드 스칼라크기가 가변적인 String 문자열을 하나하나 개별적으로 접근하기 위한 방법. Unicode기반 21-bit 코드. UTF-32랑 거의 동일. 하나 이상의 Unicode Scalar가 모여 Character를 이룸.let code = 0xAC00 let scalar = UnicodeScalar(code)! let string = "\(scalar)" // 가 let 가 = "\u{AC00}" // 가 한글 유니코드주로 쓰이는 한글 유니코드초성 19개 1100(4352) ~ 1112(4370) 중성 21개 1161(4449) ~ 1175(4469) 종성 ..
· iOS/Swift
localizedStandardCompare(_:)localizedStandardCompare(_:) documentFinder의 파일 정렬처럼 String을 비교해주는 메서드. 예시아래는 기존 sorted() 메서드의 예시.let fileNames = [ "파일이름 100.txt", "파일이름 5.txt", "파일이름 20.txt"]let sortedFileName = fileNames.sorted()sortedFileName .forEach { print($0) } 결과파일이름 (100).txt파일이름 (20).txt파일이름 (5).txt  하지만 우리가 파일 정렬에서 원하는 건 파일명 뒤의 숫자가 텍스트 순서가 아닌 Integer의 순서로 정렬이 되는 것을 원..
· iOS/Swift
(WWDC22) Hello Swift Charts(WWDC22)Swift Charts: Raise the bar Swift Charts FrameworkApple이 디자인한 Chart를 만들기 위한 Framework.SwiftUI와 동일한 선언적 문법.  Mark차트에서 각 항목에 대한 요소를 Mark라고 함.위 그림에서 Mark는 Bar Mark.import Chartsimport SwiftUIstruct StylesDetailsChart: View { var body: some View { Chart { BarMark( x: .value("Name", "Cachapa"), y: .value("Sales", 90..
· iOS/Swift
TCA가 앱 개발에서 해결하고자 하는 것상태(State) 관리: 간단한 값 타입들로 어플리케이션의 상태를 관리하는 방법, 상태를 공유를 통해 화면에서 일어나는 변화(Mutation)를 다른 화면에서 즉시 관측(Observe)하는 방법을 제공.합성(Composition): 기능을 여러 개의 독립된 모듈로 추출하는 방법, 이 모듈을 다시 합쳐서 거대한 기능을 작은 컴포넌트의 집합으로 구성하는 방법을 제공.사이드 이펙트(Side Effects): 어플리케이션 바깥세상과 접촉하는 작업을 테스트할 수 있고 이해하기 쉽게 작성하는 방법을 제공.테스팅(Testing): 아키텍처 내부의 기능을 테스트하는 방법뿐만 아니라 여러 파트로 구성된 기능의 통합 테스트를 작성하는 방법, 사이드 이펙트가 어플리케이션에 끼치는 영향..
· iOS/Swift
WWDC의 Demystify SwiftUI를 정리한 내용입니다.SwiftUI는 선언적UI로서 고수준의 앱이 원하는 것을 Describe하면 SwiftUI가 이를 구현하는 방법을 정확히 결정.대부분의 경우 잘 작동하지만, 예상하지 못한 동작을 하는 순간은 생겨나는데,이런 순간에 원하는 결과를 얻기 위해 SwiftUI가 뒤에서 무엇을 하는지 이해하는 것이 도움이 됨. SwiftUI가 코드를 볼때 무엇을 보는가Identity: SwiftUI가 앱의 여러 업데이트에서 element를 동일하거나 별개로 인식하는 방법Lifetime: SwiftUI가 시간이 지남에 따라 View와 데이터의 존재를 추적하는 방법의존성: SwiftUI가 인터페이스를 업데이트해야하는 시기와 이유를 이해하는 방법위 세가지 개념이 Swift..
· iOS/Combine
시퀀스 연산자들은 Publisher자체가 시퀀스라고 보면됨. 시퀀스 연산자들은 개별 방출값이 아닌 Publisher 전체를 다룸. 값 찾기 min() Publisher가 Finish될 때까지 기다렸다가, 최소값만 방출시켜줌. Comparable 프로토콜을 따르는 경우 별도의 파라미터없이 최소값을 찾아줌. var subscriptions = Set() // 1. 숫자를 방출하는 Publisher let publisher = [1, -50, 246, 0].publisher // 2. min 연산자로 최소값을 찾아서 print publisher .print("publisher") .min() .sink(receiveValue: { print("최소값은 \($0)") }) .store(in: &subscript..
· iOS/Combine
반응형 프로그래밍의 핵심 아이디어는 시간에 따른 비동기 이벤트 흐름을 모델링하는 것. Combine에서는 시퀀스가 시간에 따라 값에 반응하고 변환하는 다양한 연산자들을 제공. Time shifting delay(for:tolerance:scheduler:options) (Rx의 delay) Upstream Publisher가 값을 내보낼 때마다 delay 연산자는 잠시 동안 값을 유지한 다음 사용자가 지정한 스케줄러에서 요청한 지연 시간 후에 값을 내보냄. 초마다 하나의 값을 내보내는 퍼블리셔를 만든 다음 1.5초씩 지연시키고 두 타임라인을 동시에 표시하여 비교. import Combine import SwiftUI import PlaygroundSupport var subscriptions = Set(..
· iOS/Swift
https://developer.apple.com/documentation/swift/collection/count-4l4qk Collection의 Element를 세어주는 count의 복잡도는 기본적으로 O(n) 연산. RandomAccessCollection을 준수하는 경우 O(1) 연산. Collection이 비어있는지 여부를 체크할 때는 Collection.count == 0 으로 체크하는 것보다, Collection.isEmpty 로 체크하는 것이 더 좋음. if someArray.count == 0 { // ❌ ... } if someArray.isEmpty { // ⭕️ ... }
· iOS/iOS Dev
이번에 Xcode15와 iOS17의 정식 버전이 배포가 되었는데요. 바로 Xcode를 최신버전으로 올려서 사용하면 좋지만 현업에서는 그렇게하지 못하는 케이스도 많이 있습니다. 그래서 이런 경우 이전 Xcode버전에 최신버전 iOS의 Device Support파일을 넣어서 개발을 해왔습니다. 이번 Xcode15에서는 이럴때 필요한 iOS17의 Device Support파일을 제공하고 있지 않고 있고, Github에도 올라와 있지 않습니다. 대신 Xcode15에서 iOS17 디버깅을 할 수 있도록 내부 다운로드를 진행한 후 아래 명령어를 터미널에서 실행하면 defaults write com.apple.dt.Xcode DVTEnableCoreDevice enabled 아래처럼 Xcode14에서 CoreDevi..
SwiftyCody
 iOS.dev