분류 전체보기
-
SwiftLint 사용하기 2iOS 2023. 2. 14. 18:25
지난 포스팅에서 설명드렸던 SwiftLint에 대해서 한번 더 간단히 말씀드리겠습니다. SwiftLint는 Swift 언어를 사용하는 프로젝트에서 일관된 코드 스타일을 유지하고 코드 품질을 향상시키는 데 도움을 주는 도구이고, 이를 사용하여 코딩 스타일, 네이밍 규칙, 문법 및 버그에 대한 일반적인 문제를 감지하고 수정한다는 목적을 가지고 있습니다. 이번 시간에는 SwiftLint 설치 이후 적용하는 방법에 대해서 알려드리겠습니다. SwiftLint 설치방법은 SwiftLint적용하기1을 참고 하시면 됩니다. SwiftLint적용하기1의 방법을 성공적으로 끝내셨다면 Xcode Build를 진행합니다. (Xcode에서 Build 단축키 Command + B) 빌드 후 아래와 같이 해당 프로젝트내에서 발생한..
-
SwiftLint 사용하기 1iOS 2023. 2. 10. 18:15
우리는 프로젝트를 시작하기 전에 Code Convention에 대한 부분을 정해두고 시작합니다. convention에 대해 팀원과 함께 작성을 해둔다고 해도 다양한 이유로 실수로 정해둔 convention조차 지키지 못하게 됩니다. 또한 매번 프로젝트마다 서로 다른 스타일로 더 많은 실수를 발생시킬 수 있습니다. convention에 대한 실수를 방지하고 일관된 스타일의 convention을 지켜나가기 위해 SwiftLint를 적용해봅니다. SwiftLint란 ? GitHub Swift Style Guide를 기반으로 Swift 스타일과 컨벤션을 강제하기 위한 도구입니다. SwiftLint는 스위프트 커뮤니티에서 일반적으로 사용되는 스타일 가이드 규칙을 적용시켜줍니다. 이러한 규칙은 Ray Wenderl..
-
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을 사용하면 상수 저장 속성! (클래스 , 구조체 설명 참고) * 값 타입인 구조체의 인스턴스를 만들고 해당 인스턴스를 상수에 할당하면 변수 속성으로 선언된 경우에도 인스턴스의 속성을 수정할 수 없다. * 참조 타입인..
-
TIL MVC, Design PatternsTIL 2023. 1. 2. 12:37
SW Architecture와 SW Design Pattern의 개념은 어디서부터 출발했을까? SW Architecture 소프트웨어 아키텍처는 1968년 Edsger Dijkstra 와 1970년대 초 David Parnas의 연구에서 시작 SW 디자인패턴 1977년 건축학적인 디자인 패턴 개념이 시작된 이후 1987년 Kent Beck과 Ward Cunningham이 프로그래밍에 패턴을 적용하는 실험을 시작했고, 이후 GoF(Gang of Four)가 Design Patterns: Elements of Reusable Object-Oriented Software 라는 책이 1994년도에 출판하면서 디자인 패턴이 컴퓨터 과학에서 인기를 얻기 시작 SW Architecture와 SW Design Patt..
-
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..