본문 바로가기

Swift

(17)
읽기 좋은 코드 작성하기 #2 Conventions Swift.org Swift is a general-purpose programming language built using a modern approach to safety, performance, and software design patterns. www.swift.org Swift API Design Guidelines에 정의된 컨벤션 규칙을 알아보자! Conventions 컨벤션 1. 복잡도가 O(n)이 아니라면 복잡도를 주석으로 남기기 /// Time Complexity: O(n^3) func test() { a.forEach { b in b.forEach { c in c.forEach { d in ... } } } } 2. 전역 함수 대신에 메서드와 프로퍼티 사용하기 3. type, prot..
Xcode 주석 활용하기 평소 Xcode를 사용하면 우측 상단에 다음과 같은 그림을 많이 보았을 것이다. Swift의 마크다운 용어를 사용할 경우 다음과 같이 주석을 예쁘게 정리할 수 있다! /// Writes the textual representation of each ← Summary 요약 /// element of `items` to the standard output. /// ← Blank line 빈줄 /// The textual representation for each item `x` ← Additional discussion /// is generated by the expression `String(x)`. /// /// - Parameter separator: text to be printed ⎫ /// be..
[iOS] SwiftLint 적용하기 코드 개선에 도움을 주는 Lint를 적용해보자! 1. 먼저, SwiftLint를 적용하려면 Pod가 설치되어 있어야한다. https://ppomelo.tistory.com/20 [iOS] CocoaPods 코코아팟 설치 및 FMDB 사용하기 CocoaPods이란? CocoaPods 홈페이지 에서는 CocoaPods를 다음과 같이 설명하고 있습니다. 즉, 코코아팟은 스위프트 또는 오프젝티브-C를 쓰는 Cocoa환경(macOS, iOS) 프로젝트에서 사용할 수 있는 의존성 라이 ppomelo.tistory.com 2. Podfile에 SwiftLint 추가하기 pod 'SwiftLint' 3. 터미널 > 프로젝트 위치로 이동 > pod install $ cd $ pod install 4. Target > B..
[Swift] 싱글톤 패턴 (Singleton Pattern) Singleton Pattern이란? 객체를 하나만 생성하여, 생성된 객체를 어디서든 참조할 수 있도록 하는 패턴 생성 static 변수에 Singleton Pattern을 적용할 클래스의 인스턴스를 할당 initializer를 private으로 설정하여 다른 곳에서 또 인스턴스를 생성하지 못하도록 해야한다. (Thread-safe) class Singleton { static let shared = Singleton() private init() {} func printMessage(_ msg: String) { print(msg) } } 사용 클라이언트에서 .shared 변수를 불러와 사용 Printer.shared.printMessage("ppomelo")
[Swift] 튜플 tuple 튜플이란? 튜플은 하나의 변수에 여러개의 값을 담을 수 있으므로 바구니 형태이며, 인덱스와 키 값을 가집니다. 이번 포스팅에서는 지난번 배열, 딕셔너리 , 셋에 이어 튜플에 대해 알아보도록 하겠습니다. 1. 튜플 만들기 var data:(String, Int, Double) = ("Apple", 100, 3.14) print(data.0, data.1, data.2) Apple 100 3.14 2. 값 변경 data.0 = "Kiwi" data.1 = 999 print(data) ("Kiwi", 999, 3.14) 3. 키 값 지정하기 var test:[String:Int] = ["a":10, "b":7, "c":99] for item in test { print(item) print(item.0, it..
[Swift] 베이스볼 게임 1. 랜덤하게 1~9 사이의 숫자 3개를 뽑는다. (중복금지) 2. 사용자로부터 1~9 사이의 숫자 3개를 입력받는다. 3. 위치와 숫자가 모두 일치하면 S, 숫자는 일치하지만 위치가 다를 경우 B를 출력하도록 한다. 정답이 [3, 9, 7]이고 사용자가 [3, 7, 5]를 입력했다면 "1S 1B" 을 출력한다. 지난번 포스팅한 Set을 이용하여 문제를 풀어보겠습니다. 1. 정답 숫자를 저장할 공간과, 중복없이 랜덤하게 뽑은 숫자를 저장할 공간을 만듭니다. var answer_numbers:[Int] = [] var temp_numbers:Set = [] 2. 랜덤하게 1~9 사이의 숫자 3개를 뽑아 temp_numbers에 넣습니다. 숫자의 중복을 제거하고자 .count의 수가 3이 될 때 까지 whi..
[Swift] 셋 Set 셋이란? 셋은 집합이기 때문에 중복을 허용하지 않는다는 특징을 지닙니다. 셋은 바구니 객체라 할 수 있습니다. 하나의 변수에 여러개의 값을 담을 수 있기 때문입니다. 이번 포스팅에서는 지난번 배열과 딕셔너리에 이어 셋에 대해 알아보도록 하겠습니다. 1. 셋 만들기 var numbers:Set = [] var numbers2:Set = [3,6,10,12] 2. 값 추가 numbers.insert(3) numbers.insert(5) numbers.insert(6) numbers.insert(7) print(numbers) // [3, 6, 7, 5]이 출력됩니다. 3. 값 제거 numbers.remove(5) print(numbers) // [6, 3, 7]이 출력됩니다. 4. 교집합, 합집합, 차집합 ..
[Swift] 로또 번호 추출기 random(), flag, contains, sorted() 1. 사용자에게 게임 수를 입력 받는다. 2. 1~45 사이의 정수 중에서 랜덤하게 6개를 뽑는다. 3. 번호가 중복되어서는 안된다. 오늘은 랜덤함수를 이용하여 로또 번호 추출기를 만들어 보겠습니다. 💰 1. 사용자로부터 게임 수를 입력 받은뒤 Int로 형변환 한다. print("게임 수: ", terminator:"") var input = readLine() var input_num = Int(input!)! 2. 랜덤으로 뽑은 로또 번호를 담아둘 배열을 만든다. var numbers:[Int] = [] 3. 입력 받는 게임 수 만큼 로또 번호 6개를 뽑는다. while numbers.count < 6{ var number = Int.random(in: 1...45) } 4-1. 번호가 중복되지 않은..