목록앱 개발/iOS (96)
나의 발자취
열거형(enumerations)은 타입이다 커스텀 타입(enum, class, struct) basic type VS custom type : 연관된 상수(케이스)들을 하나의 이름으로 묶은 자료형 열거형 쓰는 법 - enum 뒤의 타입이름은 대문자로 쓰고, case는 뒤의 케이스 이름은 소문자로 쓴다.(swift 4.0~) - (1) 한 줄씩 쓰는 방법 (2) 콤마로 한줄에 적는 방법이 있다. enum Weekday { case monday case tuesday case wednesday case thursday case friday case saturday case sunday } enum CompassPoint { case north, south, east, west } 언제 사용하는지? 한정된 사..
KeyValuePairs란? 딕셔너리와 유사한 형태이지만, 배열처럼 순서가 있는 컬렉션 - 스위프트 5.2 버전에 등장 - 딕셔너리와 비슷한 형태지만, "순서"가 있는 컬렉션 - key값이 해셔블(hashable)일 필요없음 (검색 알고리즘상 빠르지 않음) - key값이 동일한 것도 가능 let introduce: KeyValuePairs = ["first": "Hello", "second": "My Name", "third":"is"] introduce.count introduce.isEmpty - []로 요소에 접근할 수 있다. Copy-On-Write 최적화 코드상에서 값을 복사해서 담는다 하더라도 실제 값이 바뀌기 전까지는 하나의 메모리 값을 공유해서 사용한다. 메모리를 적게 사용하기 위해 스위프..
Dictonary처럼 Set도 hashable해야한다. 그렇기때문에 정렬속도보다 검색속도가 빠른 경우에 사용할 수 있다. 집합의 성질을 이용한다. - Set의 문법 약속 - 생김새는 배열과 같음(따라서, 생성시 타입을 선언 해야함) - 수학에서의 집합과 동일하기 때문에 요소는 유일해야함(순서가 존재하지 않음) 타입 표기 // 단축문법 let set1: Set = [1, 2, 3] // 정식문법 let set2: Set = [1, 2, 3] 빈 set 생성 let emptySet: Set = [] let emptySet1 = Set() 기본 기능 set.count set.isEmpty set.contains(1) set.randomElement() 업데이트 (update) - 삽입하기 / 교체하기 / 추가..
딕셔너리의 키는 hashable해야한다. = 유일성이 보장되어야한다. (내부적으로 순서대로 존재하지 않기때문에 유일성을 가진 매커니즘을 가져야지만 가능) 참고: 해쉬 스위프트의 기본 타입은 모두 hashable하다. (개발자 지정 타입은 hashable 하지 않음) = 해시함수에 input으로 쓰일 수 있는 타입이다. = 해시함수를 사용해서 유일한 값으로 변환이 가능하다. = 유효성을 보장하고 검색 속도가 빠르다(배열보다 훨씬 빠르다) 딕셔너리 타입 표기 // 단축문법 var words: [String: String] = [:] // 정식문법 let words1: Dictionary 딕셔너리 생성 let emptyDic1: Dictionary = [:] let emptyDic2 = Dictionary()..

1. 배열 (Array) 데이터를 순서대로 저장하는 컬렉션 (자동으로 순번 지정됨) 📌타입 표기 // 정식문법 let strArray1: Array = [] // 단축문법 let strArray2: [String] = [] 📌빈 배열 생성 let emptyArray1: [Int] = [] // 명시적. 하지만 타입을 지우면 컴파일러가 알 수가 없어서 에러가 나기때문에 하나라도 입력하면 타입추론 가능. let emptyArray2 = Array() // 괄호는 생성자를 의미함 let emptyArray3 = [Int]() 📌기본 기능 numsArray.count numsArray.isEmpty numsArray.contains(1) // 파라미터로 값을 전달 numsArray.randomElement() ..
일반적으로 함수 내에서 옵셔널 타입을 파라미터로 정할 때 파라미터 내에서 선언을 해주고 기본값을 설정해준다. 그 이유는 호출을 할 때 모든 아규먼트를 넣어서 쓰기가 귀찮기 때문..이다. func someting(with label: String, name: String? = nil) { print("\(label): \(name)") } someting(with: "Label") 일반적으로는 String? = nil (기본값까지 설정해서, 함수를 유연하게 사용하도록 함) 애플이 미리 만들어 놓은 함수/메서드에는 파라미터가 옵셔널타입과 기본값이 nil로 설정된 함수들이 많다는 것을 유의!
옵셔널 추출 네가지 1. 강제추출(Forced Unwrapping) (!) 값이 있다는 것이 확실할 때 사용 var str: String? = "안녕하세요" print(str!) nil일 때 forced unwrapping을 하면 에러가 난다. 2. if문으로 nil 아닌지 확인 후 강제로 벗기기 if str != nil { print(str!) } 3. 옵셔널 바인딩 (if let 바인딩) 만약 바인딩이 된다면, 특정 작업을 하겠다는 의미이다. if let s = str { // str에 있는 값이 s라는 상수에 바껴서 담긴다면(nil값이 아니라면). 만약 nil이라면 담기지 않는다! print(s) } str: Optional String s: String +실제 앱을 만들 때 guard let 바인..
우리가 타입을 선언하고 값이 없는 공간에 접근을 하면 에러가 발생한다. 예를 들어, var yourName: String // 선언 //yourName = "홍길동" // 값을 저장하지 않는다면.. print(yourName) // (만약 저장과정이 없다면) 메모리에 저장된 값이 없는데 접근 ===> 🔸"에러" 앱이 종료되게 된다. 그래서 물음표를 붙여줘서 에러가 나지 않도록 임시적인 타입을 담아두게 된다. -> 이것이 옵셔널 var yourName: String? // 옵셔널 print(yourName) // nil nil : 값이 없음을 표현하는 키워드. 다른 언어에서는 null이 있다. 이는 값이 없음을 나타낸다. 그러나 스위프트에서는 실제 값이 없는 것이 아니다. 값이 없을 수 있다는 것을 알려주..