본문 바로가기

프로그래밍 언어/Swift

(21)
읽기 좋은 코드 작성하기 #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..
읽기 좋은 코드 작성하기 #1 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 Swift API Design Guidelines에 정의된 네이밍 규칙을 알아보자! Naming 네이밍 1. 필요한 단어를 모두 포함하기 Bad employees.remove(x) // 명확하지 않음 good employees.remove(at: x) // x번째에 위치한 employee 제거 2. 불충분한 type 정보를 보충하기 Bad func add(_ observer: NSObject, for keyPath: String)..
[Swift] Random String 만들기 주어진 문자열을 가지고 원하는 사이즈의 크기로 mixed up된 문자열 만들기 extension을 활용해서 쓰는 것을 좋아합니다 :) extension String { func createRandomStr(length: Int) -> String { let str = (0 ..< length).map{ _ in self.randomElement()! } return String(str) } } 사용 let str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" let size = 5 let iv = str.createRandomStr(length: size) 결과 d5m9C
[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] 전처리 매크로 Swift에서도 C/C++ 처럼 컴파일러 전처리기를 사용하여 매크로를 정의 할 수 있다. #if DEBUG // 디버그 모드에서 실행할 코드 #else // 릴리즈 모드에서 실행할 코드 #endif Xcode에서는 기본적으로 디버그 모드에서만 DEBUG를 선언하면 된다. 디버그 모드와 릴리즈 모드를 구분할 수 있다. 참조 swift — #ifdef Swift 언어로 대체 많은 경우에 조건부가 필요하지 않습니다. {compilation; 당신은 on/off 할 수있는 조건부 behavior 만 있으면됩니다. 이를 위해 환경 변수를 사용할 수 있습니다. 이것은 실제로 재 컴파일 할 필요가 없다는 큰 이점이 있습니다. 체계 변수에서 환경 변수를 설정하고 쉽게 전환 할 수 있습니다. NSProcessInfo를 ..
[Swift] 윤년 계산기 윤년이란? 윤년(閏年)은 역법을 실제 태양년에 맞추기 위해 여분의 하루 또는 월(月)을 끼우는 해라고 합니다. 위키백과 윤년 규칙은 다음과 같습니다. 서력 기원 연수가 4로 나누어떨어지는 해는 윤년으로 한다. (1992, 1996, 2004, 2008, 2012, 2016 ... ) 서력 기원 연수가 4, 100으로 나누어떨어지는 해는 평년으로 한다. (1900, 2100, 2200, 2300, 2500 ... ) 서력 기원 연수가 4, 100, 400으로 나누어떨어지는 해는 윤년으로 둔다. (1600년, 2000, 2400 ... ) 1. 사용자에게 연도를 입력받아서 입력받은 연도가 윤년인지 판단하여 출력하시오. 2. 만약 입력이 없다면 현재 연도를 윤년인지 판단하여 출력하시오. 3. 위의 코드를 함수..
[Swift] 현재 날짜 및 시간 출력하기 Date(), DateFormatter() Date() 현재 날짜 및 시간을 알려주는 Date() print(Date()) 2019-07-05 08:11:58 +0000 Date()를 출력하면 다음과 같이 날짜와 시간이 출력됩니다. DateFormatter() "연도만 출력하고 싶다" 또는 "시간만 알고 싶다"와 같이 특정 값만 출력하고 싶을 경우 DateFormatter()를 통해 원하는 값을 얻을 수 있습니다. var formatter = DateFormatter() formatter.dateFormat = "yyyy-MM-dd HH:mm:ss" var current_date_string = formatter.string(from: Date()) print(current_date_string) 2019-07-05 17:25:18 var for..
[Swift] 함수 Function 함수란? 어떤 값에 따라 정해진 처리 과정을 거쳐 출력값을 변환하는 것입니다. 함수의 목적 함수의 목적은 신규 명령어를 만들어 반복적인 코드 작업을 줄이기 위함이라 볼 수 있습니다. 함수 정의와 호출 처리 입력과 처리 처리와 출력 입력과 처리와 출력 함수 정의와 호출은 다음과 같이 4단계로 나눌 수 있습니다. 1. 처리만 존재할 경우 func printGreeting() { print("Hello World") } // 함수를 호출, 함수 사용 printGreeting() 2-1. 입력과 처리 func printGreetingTo(name:String){ print("Hello", name) } printGreetingTo(name:"PPOMELO") Hello PPOMELO 2-2. 입력과 처리 - 매..