목록Swift (208)
HIT해

map이란?콜렉션(데이터의 모음) 이나 배열, set, dictionary 등의 형태를 바꾸는 고차함수. 배열의 요소들 하나하나의 형태를 T 다른 형태로 바꾸고 이를 배열 형태로 반환한다. 1. Arraylet myNumbers : [String] numbers.map { return "내 숫자 : \($0)"}//let myNumbers : [String] numbers.map { (aNumber : Int) in// return "내 숫자 : \(aNumber)"//} 2. Dictionarylet myPetDictionary = ["고양이" : "야옹, "강아지" : "멍멍"]// let myPets : [String] = myPetDictionary.map { (animal:String, c..

foreach enumerated이란?foreach를 돌릴때 index도 같이 가져오게 하는 방법이다. var myFriendsArray : [String] = ["짱구","철수","훈이","유리","멩구"]var friendsWithIndex : [String] = []for (index, aFriend) in myFriendsArray.enumrated() { print("index: \(index), item : \(aFriend)") friendWithIndex.append("\(index).번 \(aFriend)")}

private (set) 이란?외부에서 값을 변경하는 것을 방지하는 키워드다 struct MyPet{ var title : String = "타이틀없음" // public과 같음, 바깥에서도 접근이 가능. private (set) var name :String = "이름없음" // 클래스일땐 안넣어도 되지만 struct에서 네임이라는 변수를 변경하려면 mutatating을 넣어줘야함 mutating func setName(to newName:String){ self.name = newName }}var myPet = MyPet()myPet.name // 이름없음myPet.title // 타이틀없음myPet.title = "호롤롤로"myPet.title // "호롤롤로" 변경..

var MyArray = [ 3,4,6,1,7,247,245,24,5,6]var ascendingArray = myArray.sorted()// 오름 차순으로 정렬해줌myArray.sort()// 배열 자체를 정렬시켜줌// 내림차순 정렬var descendingArray = myArray.sorted(by:>) sorted는 내가 정렬한 배열을 반환하는 것이고sort는 나 자체를 정렬하는 것. sort는 오름차순 by:> 내림차순 프로젝트 사용예시구조체간 비교가 필요한 경우 컬렉션 타입이 아니기 때문애 따로 설정없이 sort를 하면 정렬이 되지 않는다. struct Todo : Comparalble, Hashable { // Comparalble 로 비교가 가능하게 ,Hashable로 리스트에서 사용이..

고차함수란?함수인데 매개변수로 클로저를 받고 매개변수로 받은 클로저로 값을 변환하거나 반환하는 함수 사용예시func getName(_name: STring) -> String{ return "내 이름은 \(name)"}var getNameClosure : (String) -> String// completion이라는 클로저를 매개변수로 받고func sayHello(completion : (String) -> String, name : String) -> String{ // 클로저를 반환값으로 받는다. return completion(name)}let resultOne = sayHello(completion : getName(_:), name : "자우림")// print 내 이름은 자우림 클..

Lazy란?메모리에 바로 올리지 않고 사용할 떄 올리게 하는 키워드다. 예시코드import UIKitstruct Pet { init(){ print("Pet 이 생성되었다.") }} struct Friend {var name: Stringvar pet : Pet = Pet () init(_ name: String){ self.name = name print("Friend 가 생성됨") }}var myFriend = Friend("자우림") Friend에서 Pet이 생성이 되면 메모리에 올라가고 init이 실행되어 아래와 같은 실행 순서를 보이게 된다. Pet 이 생성되었다.Friend 가 생성됨 변수 앞에 lazy를 붙여보자import UI..

typealias란?기존에 선언되어 있는 유형에 새로운 유형의 별칭을 사용함으로써코드를 더 읽기 쉽도록, 이해하기 쉽도록 만드는 문법이다! 내장 유형 -> String, Int, Float사용자 정의 유형 -> Class, Struct, Enum복합 유형 -> Closure프로토콜 통합 1. 내장 유형 예시typealias Name = Stringlet name : Name = "양희태" 2. 사용자 정의 유형 예시Class Human {}typealias Humans = [Human]var humans : Humans = [] 이때 Humans 라는 타입은 Array, [Human] 타입과 같은 타입이 된다. Class 내부 변수 또는 열거형을 나타낼 수도 있다.typealias MyType = MyC..

기존 클래스, 구조체, 열거형 타입에 새로운 Property, Method, Initializer 등을 추가하는 것으로원본 타입(소스 코드) 에 접근하지 못하는 타입들도 확장해서 사용할 수 있다.extenstion은 코드의 가독성을 높이고, 기능을 모듈화하며, 기존 타입을 더 쉽게 확장할 수 있게 해준다고한다. extension에 프로퍼티 추가하기extension Int { var zero : Int = 0}// 에러 발생 저장 프로퍼티는 추가할 수 없으며 , 오로지 연산 프로퍼티만 추가가 가능하기에 오류가 발생한다. 그래서 다음과 같이 연산 프로퍼티만 가능하다.extension Int { var half : Int {{ return self / 2 }} 사용할때는 아래와같다...