Swift
-
Dictionary init(uniqueKeysWithValues:)Swift 2023. 1. 6. 12:26
Dictionary를 간단하게 설명하자면 요소들이 순서 없이 key와 value로 구성되는 collection Type이다. Dictionary는 key값이 유일해야하며, 같은 이름을 중복으로 사용할 수 없고 value는 상관없다. let dict: [String: Int] = ["A": 1, "B": 2, "C": 3] Dictionary init(uniqueKeysWithValues)는 주어진 시퀀스의 key-value 쌍에서 새로운 딕셔너리를 만든다. 간단히 말하면 배열에 value를 임의로 추가하여 새 Dictionary로 초기화시킨다고 알면된다. init(uniqueKeysWithValues keysAndValues: S) where S : Sequence, S.Element == (Key, V..
-
Swift 구조체와 클래스 3 저장 속성, 지연 저장 속성, 계산 속성, 타입 속성, 프로퍼티 감시자Swift 2023. 1. 4. 16:19
속성(프로퍼티): 속성은 값을 특정 클래스, 구조체 또는 열거형과 연결해준다. 저장 속성: 상수 및 변수 값을 인스턴스의 일부로 저장 (클래스, 구조체) 계산 속성: 값을 저장하는 대신 계산 (클래스, 구조체, 열거형) 타입 속성: 속성들이 타입 자체와 연관 되어 있는 것 1. 저장 속성 각 인스턴스가 가지는 고유의 데이터 저장공간이고 변수나 상수로 선언이 가능하고 반드시 값을 가져야한다! 클래스 또는 구조체의 인스턴스와 연관된 값을 저장하는 속성. var를 사용하면 변수 저장 속성, let을 사용하면 상수 저장 속성! (클래스 , 구조체 설명 참고) * 값 타입인 구조체의 인스턴스를 만들고 해당 인스턴스를 상수에 할당하면 변수 속성으로 선언된 경우에도 인스턴스의 속성을 수정할 수 없다. * 참조 타입인..
-
Swift 구조체와 클래스 2 초기화(Initialization)Swift 2022. 12. 30. 02:42
초기화는 뭘까? 초기화는 클래스, 구조체, 열거형 인스턴스를 사용하기 위해 준비 작업을 하는 단계 즉, 모든 프로퍼티를 기본 값으로 초기화 한다는 것! 인스턴스는 뭘까? 인스턴스는 메모리에 찍어내는, 실제로 메모리에 할당되어 구체적 실체를 갖춘 것을 의미함. 메모리에 올라가서 각각의 어떤 데이터 역할을 하게되는 실제데이터임! 생성자 init은 인스턴스를 만들 때 사용하는 특별한 메서드임. 구조체와 클래스를 선언할 때 모든 저장 속성을 초기화 해줘야하는데 초기화를 하지 않으면 컴파일 에러가 남. 구조체, 클래스는 모두 하나의 설계도일뿐 안에 실제 데이터(속성), 동작(메서드)를 사용하기 위해서는 초기화 과정이 꼭 필요하다는 사실⭐️ 클래스의 초기화 class introduce { var name: Stri..
-
Swift 구조체와 클래스 1(Struct and Class) 사용이유, 공통점, 차이점, 구조체와 클래스 내의 let, var 선언Swift 2022. 12. 28. 15:00
구조체와 클래스는 왜 사용할까? 데이터를 용도에 맞게 묶어서 표현할 때 유용 애플이 미리 설계해둔 클래스/구조체를 잘 사용하기 위함 구조체랑 클래스의 공통점은 뭘까? 프로퍼티와 메서드를 사용하여 구조화된 데이터와 기능을 가짐 하나의 새로운 사용자 정의 데이터 타입을 만들 수 있음 초기 상태를 설정할 수 있는 initializer 정의 extension을 통해 확장 특정한 종류의 표준 기능을 제공하기 위한 프로토콜 순응 subscript 문법을 이용해 특정 값을 접근할 수 있는 subscript 정의 구조체랑 클래스의 차이점은 뭘까? 구조체는 값타입(value Type) 인스턴스 데이터를 모두 스택에 저장하고, 스택은 함수를 실행할 때 함수내에서 필요한 데이터들을 스택내에서 사용. 구조체는 모든 데이터가 ..
-
TIL 💡 swift compactMap(_:), enumerated()TIL 2022. 12. 24. 13:33
compactMap(_:) : 각 아이템을 매핑해서 변형하되 자동으로 옵셔널 제거하고 새로운 배열을 생성 해준다. 일반적으로 map은 각 아이템을 매핑해서, 변형해서 새로운 배열생성을 해주는 것이고 map이 가진 기능을 더해 옵셔널 값을 제거하고 새로운 배열을 생성해주는 것! let findNumbers = ["1", "2", "three", "///4///", "5"] let mapped: [Int?] = findNumbers.map { str in Int(str) } print(mapped) //[Optional(1), Optional(2), nil, nil, Optional(5)] let compactMapped: [Int] = findNumbers.compactMap { str in Int(str..
-
Swift Optional 정의, 옵셔널 추출 방법Swift 2022. 12. 22. 22:59
Optional 옵셔널은 wrapping 된 값으로 optional이 선언 되어있는 값은 내부에 값이 있는 지 없는지 알 수 없음 아래처럼 두가지 방식으로 선언이 가능한데, 문서에 따르면 코드를 쉽게 읽고 쓸 수 있도록 축약형(Int?)이 선호된다고 함! let long: Optional let short: Int? ❓어떤 경우에 사용할 수 있을까? 먼저 타입에 대한 개념이 필요하다. 타입은 메모리 공간에 어떤 형태로 어떤 데이터가 들어있다고 알려주는 것임! 아래의 예시처럼 값을 저장하지 않고 출력을 하면 에러가 생긴다. 값을 출력 하기전에 값을 저장해줘야한다. 변수 선언시에 값을 넣어주거나 따로 넣어주거나 아래에 포함된 주석처럼 값을 저장해줘야 에러가 발생하지 않는다. var myAge: Int //v..
-
API Design Guidelines 알아보기(swift Naming)Swift 2022. 12. 21. 19:53
👩🏻💻 같이 프로젝트를 진행하는 팀원과 네이밍에 대해서 서로의 스타일이 다른 점을 발견했다. 나는 변수명이 길어지더라도 한눈에 알아보기 좋은 방식이 좋고, 팀원은 알아볼 수 있는 정도의 축약을 원했다. 처음에는 나도 정확히 알지 못하기 때문에 변수명이나 함수명이 너무 길어져서 좋은 방식이 아니라는 생각도 들었는데 https://www.swift.org/documentation/api-design-guidelines/#naming Swift.org Swift is a general-purpose programming language built using a modern approach to safety, performance, and software design patterns. www.swift.org..
-
TIL 💡git revert, reset 사용법의 차이, swift 전달인자 레이블(argumentLabel)TIL 2022. 12. 21. 00:39
git revert 와 git reset 명령어에 대해서 조금 더 자세히 알기 git revert 커밋id git revert Head ~ 취소할 커밋 수 revert는 commit의 기록을 유지하면서 상태를 되돌릴 수 있음! 한마디로 코드는 원했던 방식으로 돌아가지만, 로그에 기록이 남아있는 것은 확인 가능하다는 사실 git reset —hard 커밋id commit의 기록을 유지하지 않고 해당 커밋까지 삭제! 과거로 깔끔하게 돌아갈 수 있음. 🥬 실제로 프로젝트를 할때 어떻게 사용 할 수 있을까? 내가 main 브랜치에서 작업할 sub 브랜치를 만들고, sub 브랜치에서 혼자 작업하다가 상태를 되돌일 일이 생기면 reset을 사용! sub 브랜치에서 작업한 부분을 main 브랜치에 merge를 했는데..