- Total
목록오뚝이 개발자/swift (20)
꿈꾸는리버리
이렇게 Bindin이 있는 경우... struct GrayLineTextFieldView: View { @Binding var text: String var body: some View { TextField(text: $text) { Text("제목") } } } 프리뷰에서 보려고 하면,, 이렇게 .constant로 @Binding이지만, 값이 안 변하게 주로 했었는데 #Preview { GrayLineTextFieldView(text: .constant(""), placeHolder: "이름") } 문득 Preview에서도 Binding이 되는 걸 보고 싶어서.. #Preview { struct BindingViewExamplePreviewContainer : View { @State var text:..
휴.. 다시 마음을 잡고 Swift 공부를 시작했다. 오랜만에 문서를 읽고 공부하니까 재밌다!! 생산적인 input이 들어오는 것 같아서... ㅎㅎ 저번에 멈췄던 부분에서 다시 시작하려고 보니까 모나드에서 하면 되더라구요? 그래서 시작하는 모나드 이야기... 함수형 프로그래밍을 이해하는데에 모나드가 필수적이라 하는데,, 나중에 이 연관성에 대해 논할 수 있는 머리가 되면 다시 이야기를 덧붙여보겠습니다! 모나드 그게 뭐죠? 모나드.. 그게 뭔지 모르겠어서 사전에 쳤는데 이것도 뭐라는 지 모르겠어서.. 그냥 냅다 읽....었다 모나드의 조건 일단 모나드의 조건은 다음과 같다. 🍀 모나드의 조건 🍀 1. 타입을 인자로 받는 타입 (특정 타입의 값을 포장) 2. 특정 타입의 값을 포장한 것을 반환하는 함수가 존..
프로그래머스 문제를 풀다가 정리하게 된 내용으로, Dictionary를 초기화 하는 여러 방법에 대해 공부한 내용이다. 🌟 기초적으로 알고 있는 Dictionary init 방법 기본적으로는 아래와 같이 많이 사용했었다. // 빈 딕셔너리 생성 후 값 넣기 var emptyDict = Dictionary() var emptyDict = [KeyType: ValueType]() emptyDict[key값] = value값 // 값을 넣으면서 이전 값 추출하기 let oldValue = dict.updateValue(value3, forKey: key3) // 딕셔너리 만들면서 초기화 시키기 let dict = ["key1": value1, "key2": value2, "key3": value3] 🌟 Dic..
앞서 블로그에서 확인한 것처럼 numbers에 있는 내용을 txt 파일로 변환을 해서 폴더로 만들어야 했다.. 해야 하는 일들을 list화 시키면 다음과 같다. - numbers의 내용을 json으로 변환하고 - txt 파일 내의 json의 내용을 읽어내고 - json의 내용을 string -> struct으로 변환 - struct으로 변환한 json의 Text 내용은 txt 파일에 넣고 이 txt 파일을 Emotion folder으로 넣어 분류해야 한다. 1. numbers의 내용을 json으로 변환하고 이 부분은 이미 전에 해봤던 거기 때문에 간단하게 할 수 있었다 ! ( 해당 블로그 포스팅 참고 ) 2. txt 파일 읽기 이때부터가 어려움의 시작이었다. 처음에는 어차피 파일만 만들고 필요없어지는 코..
1) Date extension에 Date를 특정 형태의 String값으로 변형하여 반환하는 함수를 생성한다. extension Date { enum DataFormatCatagory: String { case koreanDate = "yyyy년 MM월 dd일(EEEEE)" } func convertDateToKoreanDate(_ dataFormatCatagory: DataFormatCatagory) -> String { let formatter = DateFormatter() formatter.dateFormat = dataFormatCatagory.rawValue formatter.locale = Locale(identifier: "ko_KR") let koreanDate = formatter.st..
UIKit을 공부하기 시작하면 delegate~~ delegate ~~~ 이.. 위임자.. 대리자... 뭐 그런 녀석들의 이름을 많이 듣는다. 블로그들을 보고 공식 문서를 봐도... 잘 이해가 되지 않고,.. 그래서 많이 애먹었던 ! 요 delegate 녀석을 다뤄보고자 한다 ! 어디서나 볼 수 있듯이 핵심은 delegate(대리자)는 "남의 일을 대신해야 하는.. 녀석" 이다.. 이렇게 말하면 이해가 잘 되지 않는다. ( 나는.. 그랬씁니다.. ) 🌷 예제를 통해 차근차근 알아가보자 ! class A { func work() { print("A가 일을 합니다") } } A는 work()라는 함수를 가지고 있는.. A 일을 하는 녀석이다. class B { weak var delegate: A? func..
이전포스팅에서 protocol에서 method나 init을 요구할 때에 대해 알아봤다. 이번 포스팅에서는 프로토콜을 상속하는 경우, class 전용 프로토콜, 그리고 프로토콜의 조합과 프로토콜을 준수했는지 확인하는 등...의 프로토콜의 또 다른 부분을 다뤄보고자 한다. 🌷 protocol의 상속 protocol은 하나 이상의 protocol을 상속 받아 기존 protocol의 요구사항보다 더 많은 요구사항을 추가할 수 있다. 클래스의 상속 문법과 유사하기 때문에 크게 어렵지는 않다 ! protocol FirstProtocol { var name: String { get } } protocol FirstProtocol2 { var height: Int { get } } protocol SecondProto..
이번 포스팅에서는 protocol에서 method나 init을 요구할 때에 대해 알아보고자 한다 ! protocol이 무엇인지와 protocol에서 property를 요구할 때 주의해야 하는 사항들에 대해 모른다면, 이전 포스팅을 보고 오는 것을 추천한다 ! 🌷 protocol 요구사항 ( 이전 포스팅 이어서... ) 2️⃣ method 요구 프로토콜은 특정 인스턴스 메서드나 타입 메서드를 요구할 수 있다. 이전에 말한 대로, protocol에서는 선언만을 해야 한다. 1) 따라서 protocol에서는 실제 구현부를 제외하고 매서드의 이름, 매개변수(가변 매개변수도 가능), 반환 타입 등을 작성해야 한다. 2) 이때, 프로토콜에서는 method의 매개변수의 기본값은 지정할 수 없다. 예시 코드 proto..