개발/Ios(Swift)
IOS 스위프트(Swift) 문법 - 고차함수
고차함수란? 다른 함수를 전달 인자로 받거나 함수 실행의 결과를 함수로 반환하는 함수 스위프트에서 제공하는 고차함수 - map - filter - reduce //map 컨테이너 내부의 기존 데이터를 변형하여 새로운 컨테이너를 생성 let numbers = [0,1,2,3] //[0,1,2,3] let mapArray = numbers.map { (number) -> Int in //[0,2,4,6] return number * 2 } print("map \(mapArray)") //"map [0, 2, 4, 6]\n" //filter 컨테이너 내부의 값을 걸러서 새로운 컨테이너로 추출 let intArray = [10,5,20,13,4] //[10, 5, 20, 13, 4] let filterArray..
IOS 스위프트(Swift) 문법 - 클로저
클로저란? 코드에서 전달 및 사용할 수 있는 독립 기능 블록이며, 일급 객체의 역할을 할 수 있습니다. 일급객체란? 전달 인자로 보낼 수 있고, 변수/상수 등으로 저장하거나 전달할 수 있으며, 함수의 반환 값이 될 수 도 있습니다. Named Closure, Unnamed Closure func hello() { print("안녕하세요") } let hello2 = { print("안녕하세요") } ///// /* { (매개 변수) -> 리턴 타입 in 실행 구문 } */ let hello = { () -> () in //() -> () print("hello") //() } hello() //hello let hello2 = { (name: String) -> String in //(String) ->..
IOS 스위프트(Swift) 문법 - try-catch
에러 처리란? 프로그램 내에서 에러가 발생한 상황에 대해 대응하고 이를 복구하는 과정입니다. - 발생(throwing) - 감지(catching) - 전파(propagating) - 조작(manipulating) enum PhoneError: Error { case unknown case batteryLow(batteryLevel: Int) } //throw PhoneError.batteryLow(batteryLevel: 20) func checkPhoneBatteryStatus(batteryLevel: Int) throws -> String { guard batteryLevel != -1 else { throw PhoneError.unknown } guard batteryLevel > 20 else {..
IOS 스위프트(Swift) 문법 - 옵셔널 체이닝
옵셔널 체이닝이란? 옵셔널에 속해있는 nil 일지도 모르는 프로퍼티, 메서드, 서브스크립션 등을 가져오거나 호출할 때 사용할 수 있는 일련의 과정입니다. struct Developer { let name: String } struct Company { let name: String var developer: Developer? } var developer = Developer(name: "han") //Developer var company = Company(name: "Gunter", developer: developer) //Company print(company.developer) //"Optional(__lldb_expr_41.Developer(name: "han"))\n" print(compan..
IOS 스위프트(Swift) 문법 - 열거형
열거형이란? 연관성이 있는 값을 모아 놓은 것을 말합니다. enum CompassPoint { //case north, south, east, west 한줄로 사용할 수 있음 case north case south case east case west } var direction = CompassPoint.east //east direction = .west //west //switch구문과 함꼐 사용 switch direction { case .north: print("north") case .south: print("south") case .east: print("east") case .west: print("west") //"west/n" } // enum CompassPoint: String { /..
IOS 스위프트(Swift) 문법 - 익스텐션
익스텐션이란? 기존의 클래스, 구조체 , 열거형, 프로토콜에 새로운 기능을 추가하는 기능 익스텐션이 타입에 추가할 수 있는 기능 - 연산 타입 프로퍼티 / 연산 인스턴스 프로퍼티 - 타입 메서드 / 인스턴스 메서드 - 이니셜라이저 - 서브스크립트 - 중첩 타입 - 특정 프로토콜을 준수할 수 있도록 기능 추가 /* extension SomeType { //추가 기능 } */ extension Int { var isEven: Bool { return self % 2 == 0 } var isOdd: Bool { return self % 2 == 1 } } var number = 3 number.isOdd number.isEven extension String { func convertToInt() -> Int..
IOS 스위프트(Swift) 문법 - 프로토콜
프로토콜이란? 특정 역할을 하기 위한 메서드, 프로퍼티, 기타 요구사항 등의 청사진 /* protocol 이름 { } */ protocol SomeProtocol { } protocol SomeProtocol2 { } struct SomeStructure: SomeProtocol,SomeProtocol2 { } /* class SomeClass: SomeSuperclass, FirtstProtocol, AnotherProtocol { } */ protocol FirstProtocol { var name: Int { get set } var age: Int { get } } protocol AnotherProtocol { static var someTypeProperty: Int { get set } } ..
IOS 스위프트(Swift) 문법 - assert와 guard
assert란? - 특정 조건을 체크하고, 조건이 성립되지 않으면 메세지를 출력하게 할수 있는 함수 - assert 함수는 디버깅 모드에서만 동작하고 주로 디버깅 중 조건의 검증을 위하여 사용합니다. guard 문이란? - 뭔가를 검사하여 그 다음에 오는 코드를 실행할지 말지 결정하는 것 - guard 문에 주어진 조건문이 거짓일 때 구문이 실행됨 var value = 0 assert(value == 0) value = 2 assert(value == 0, "값이 0이 아닙니다") -> __lldb_expr_10/MyPlayground.playground:7: Assertion failed: 값이 0이 아닙니다 Playground execution failed: error: Execution was in..