포스팅을 이어가다보니 함수와 메소드의 차이점에 대해 궁금해졌다. 검색해보니 이미 많은 블로거들이 해당 내용에 대해 친절하게 정리를 해놓아서 쉽게 이해할 수 있었다. 내가 이해한 바는 다음과 같다. 함수(function) 함수는 특정 작업을 수행하는 코드 블럭을 의미한다. 이보다 더 깔끔한 문장으로 표현하긴 힘들 것 같다. 메소드(method) 메소드는 클래스(class),구조체(struct),열거형(enum)에 포함된 함수이다. import Foundation func plus(a:Int, b:Int) -> Int{ return a + b } // 함수 struct Calculate{ func plus(a:Int, b:Int) -> Int{ return a + b } // 메소드 } plus(a: 1, ..
iOS

코테 문제를 풀다보면 날짜 문자열이 주어질 때가 있다. "2000.09.06" 혹은 "2000-09-06" 같은 형식으로 줄텐데 날짜를 비교하기 위해 문자열을 쪼개서 Int 타입으로 만든 후 "일"로 통일해서 비교하는 방법을 주로 사용하는 것 같았다. 문자열을 쪼개는 방법은 split과 components 두 메소드를 사용해 쪼갤 수 있다. 이 두 메소드의 차이점을 알아보자 split func split( separator: Self.Element, maxSplits: Int = Int.max, omittingEmptySubsequences: Bool = true ) -> [Self.SubSequence] Swift standard 라이브러리에 포함되어있어 따로 import같은걸로 호출할 필요없이 바로 ..
가장 일반적으로 사용되는 데이터 타입 중 하나. 타입 지정을 통해 단일 타입을 유지한다. 정수, 문자열, 클래스 등 모든 타입의 요소를 저장할 수 있다. 선언 array는 요소의 타입을 지정하여 빈 배열을 만들 수 있다. var emptyDoubles: [Double] = [] var emptyFloats: Array = Array() 미리 초기화된 배열이 필요하다면 이니셜라이저를 사용해 만들 수 있다. Array(repeating: 타입, count: 요소 개수) var digitCounts = Array(repeating: 0, count: 10) print(digitCounts) // Prints "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]" 알아야 할 메소드 .isEmpty 배열이 비..
map array의 모든 요소에 동일한 연산(함수)을 실행한다. 공식 문서 예시 let cast = ["Vivien", "Marlon", "Kim", "Karl"] let lowercaseNames = cast.map { $0.lowercased() } // 'lowercaseNames' == ["vivien", "marlon", "kim", "karl"] let letterCounts = cast.map { $0.count } // 'letterCounts' == [6, 6, 3, 4] filter array의 모든 요소에서 특정 조건에 부합하는 요소만으로 이루어진 배열을 리턴한다. 공식 문서 예시 let cast: Set = ["Vivien", "Marlon", "Kim", "Karl"] let sh..
소수점을 다루는 함수, Float이나 Double타입을 입력해야한다. round() - 반올림 ceil() - 올림 floor() - 내림

발표 목차 (임시) SwiftUI의 기본 개념과 뷰 레이아웃 SwiftUI의 뷰 레이아웃 시스템과 뷰 컨테이너에 대한 소개 뷰를 배치하고 레이아웃하는 방법 SwiftUI의 뷰 프로퍼티와 메서드에 대한 소개 커스텀 뷰 만들기 (원하는 뷰를 만드는 방법) SwiftUI에서 뷰를 커스텀하는 방법에 대한 소개 SwiftUI에서 뷰를 구성하는 방법에 대한 소개 SwiftUI에서 뷰를 커스텀하는 예시 뷰 모디파이어 (뷰를 내가 원하는 위치에 놓기 위한 방법) SwiftUI에서 뷰 모디파이어를 만드는 방법에 대한 소개 SwiftUI에서 뷰 모디파이어를 구성하는 방법에 대한 소개 SwiftUI에서 뷰 모디파이어를 커스텀하는 예시 마무리 및 Q&A 발표 내용 요약 질문에 대한 답변 그래픽은 다루지 않음 가장 큰 목적은 ..

Canvas Canvas는 기본적으로 다음 형태로 쓰인다 Canvas { context, size in context.stroke( Path(ellipseIn: CGRect(origin: .zero, size: size)), with: .color(.green), lineWidth: 4) }.frame(width: 300, height: 200) .border(Color.blue) //Canvas의 테두리 GraphicsContext와 CGSize를 리턴해줘야하는 클로저이다. 위의 예시 코드에서 context와 size는 각각 GraphicsContext와 CGSize타입을 갖는다. context의 storke 메소드로 Canvas에 2D그래픽을 그릴 수 있다. stroke 메소드의 파라미터에는 Path..

심화반 수업을 들으면서 영화 이미지를 터치했을 때 넘어가는 상세페이지를 작업중 View 배치가 마음대로 안되어서 애먹고있다. VStack이든 HStack이든 설정이 없다면 바디의 중간에 놓여지는 것 같다. 내가 원하는 화면은 모든 스택들을 왼쪽으로 몰아 넣는 것이다. var body: some View { HStack{ VStack(alignment:.leading, spacing: 30){ HStack{ ... } VStack(alignment: .leading){ ... } } } } } 현재 작성된 코드다. HStack안에 VStack으로 영화 이미지와 정보들을 쌓았다. Stack에선 alignment와 spacing 파라미터로 Stack안의 뷰들을 배치할 수 있다. alignment 스택 안의 하..