ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Swift #4 - 다수의 데이터 다루기
    Swift의 온도 2021. 1. 6. 02:29

     

    1. 튜플

     

    - 다수의 데이터

    #가변 개수의 데이터

     *데이터의 개수가 가변

     *다루는 데이터의 타입

     

    #다수의 데이터 다루기

     *튜플

     *배열

     *딕셔너리

     *셋

     

    - 튜플(tuple)

    *괄호 안에 콤마(,)를 이용해서 값 나열
     
    (1"one""일")
     
    *변수(상수)로 다루기
     
    var one = (1"one""일")
     
    *값 얻어오기, 값 설정
     
    var one = (1"one""일")
    one.2
    one.2 = "하나" // 값 설정하기
     
    *언더스코어(_) : 무시
     
    let(num,_,_) = one
    num // 1
    cs

     

    - 이름 설정

    *원소에 이름 설정
    *이름으로 접근
     
    let two = (num:2, eng:"two", kor:"둘")
    two.num // 2
    two.kor // 둘
    cs

     

    - 튜플 간 비교

    *튜플 간 비교
    *튜플 내 원소 순서대로 비교
     
    (1"1"== (1"1"// true
    (1"one"< (2"two"// true
    (1"one"< (2"first")
    cs

     

    2. 배열

     

    - 콜렉션 타입

    #배열, 딕셔너리, 셋

     

    - 배열

    #인덱스 기반, 다수의 데이터 다루기

    #타입 선언 : Array<Element>, [Element]

     

    * 배열 변수, 상수

    #var로 배열 생성 - 배열 내용 수정 가능

    #let으로 배열 생성 - 배열 내용 수정 불가(immutable)

     

    - 배열 생성

    var intArray:[Int= [1,2,3,4,5]
    let strArray = ["A","B","C"]
    let floatArray = Array<Float>([1.1,2.2,3.3])
     
    *공백 배열(타입 선언 필요)
     
    var emptyArray = [Int]()
    var emptyArray2 = Array<Double>()
    var emptyArray3:[String= []
    cs

     

    - 원소 접근

    *원소 개수와 공백 확인
     
    floatArray.count
    emptyArray.isEmpty
     
    *항목 접근, 첨자 표기
     
    let element1 = intArray[0]
    let element2 = floatArray[1]
    cs

     

     

    - 배열 변경

    #원소 추가

    *원소 추가 함수
     
    mutating func append(_newElement: Element
    mutating func insert(_newElement: Element, at i: Int)
    +연산자
     
    *예제 코드
     
    var intArray : [Int= [1,2,3]
    intArray.append(5// [1,2,3,5] 마지막에 추가
    intArray.insert(4, at: 3// [1,2,3,4,5] 지정한 자리에 추가
    int Array += [6,7]
    cs

     

    #배열 항목 삭제 : remove

    *특정 인덱스의 항목 제거
     
    intArray.remove(at.3// 3에 해당하는 인덱스 제거
     
    *첫 번째 원소 제거, n개 제거
     
    func removeFirst()
    func removeFirst(_n: Int)
     
    *마지막 원소 제거, n개 제거
     
    intArray.removeLast()
    intArray.removeLast(_n: Int)
    cs

     

    #배열 내 원소 변경

    *첨자로 변경
     
    var IntArray = [1,2,0,4]
    intArray[2= 3 // 2에 대한 값을 3으로 변경
    intArray // [1,2,3,4]
     
    *범위를 이용한 배열의 원소 변경
     
    var intArray = [1,0,5,5]
    intArray[1...2= [2,3,4// 1번 인덱스 와 2번 인덱스를 2,3,4로 대치
    intArray // [1,2,3,4,5]
    cs

     

    - 밸류 타입

    #Swift의 배열은 밸류 타입

    *새로운 변수(상수)에 대입 → 복사
     
    var array1:[Int= [1,2,3]
    var array2 = array1 // array1을 array2로 복사
    array1.append(4// 복사 후 추가되었으므로 array2는 1,2,3 출력
    array1 // [1,2,3,4]
    array2 // [1,2,3]
     
    *배열 간 비교 : == 연산자
     
    let array1 = [1,2,3]
    let array2 = [1,2,3]
    array1 == array2 // true
    cs

     

    3. 딕셔너리

     

    - 딕셔너리

    #키 - 값 방식으로 다수의 값 다루기

    #딕셔너리 내 키는 유일

    #키 : 해시값을 제공할 수 있는 Hashable

    #딕셔너리 객체 생성

     *타입 선언 - 키와 값, 두 타입 필요

     *Dictionary<Key, Value>, [Key :Value]

    #변수, 상수

     *수정 가능 딕셔너리 : var

     *수정 불가능 : let

    #객체 생성

    *키:String, 밸류:String
     
    var dic = ["1월"."January""2월"."February""3월"."March"]
     
    *키:String, 밸류:Int
     
    var dic2:[String:Int= ["일":1"이":2"삼":3]
     
    *키:Int, 밸류:String
     
    var dic3:Dictionary<IntString> = [1:"One"2:"Two"3:"Three"]
     
    *빈 딕셔너리 객체 생성
     
    var emptyDic = [Int:Int]()
    cs

     

    - 딕셔너리 원소 접근

    #딕셔너리 원소

    *원소 개수:Count 프로퍼티
     
    dic.count
     
    *원소 접근(subscript)
     
    dic["2월"]
     
    *없는 원소에 접근하면?
     
    dic["NotExistKey"// nil
    cs

     

    - 원소 변경

    *원소 추가:새로운 키로 값 설정
     
    dic1["4월"= "april"
    dic1["5월"= "may"
     
    *변경 - 있는 키:updateValue(_:forkey:)
     
    dic1["4월"= "잔인한 달"
    dic1.updateValue("계절의 여왕", forKey:"5월")
     
    *원소 삭제:removeValue(forKey:)
     
    dic.removeValue(forKey:"2월")
    dic["3월"= nil
    cs

     

    - 밸류 타입

    #딕셔너리도 배열 처럼 밸류 타입

    *새로운 변수(상수) 대입 시 복사
     
    let newDic = dic
     
    *딕셔너리 객체 간 비교:==
     
    dic1 == dic2
    cs

     

    - 다중 구조

    #콜렉션을 이용한 다중 구조

    *2차원 배열과 접근하기
     
    var twoDimensionArray:[[String]] = [["a","b"],["c""d","e"],["f"]] //대괄호를 2개 쓸 경우 2차원 배열
    two.DimensionArray[1][1// 첫 번째 배열의 첫 번째 원소 접근이므로 "d"에 접근
     
    *딕셔너리와 배열
     
    let evenNums = [2,4,6]
    let oddNums = [1,3,5,7]
    let dic:[String:[Int]] = ["even":evenNums, "odd":oddNums]
    dic["odd"]![1]
    cs

     

    4. 셋(Set)

     

    #유일한 원소

    #원소만 저장

    #임의의 순서

     

    - 셋 객체 생성

    *배열에서 생성
     
    var becerage:Set<String> = ["Coke""Juice""Milk"]
     
    *공백의 셋 객체 생성
     
    var letters = Set<Character>() // 공백의 셋 생성
    cs

     

    - 셋 : 원소 접근

    *개수:count 프로퍼티
     
    beverage.count
     
    *빈 셋 확인:isEmpty
     
    beverage.isEmpty // false
     
    *원소 포함 확인 : contains(_:)
     
    beverage.contains("Coke")
    beverage.contains("Sprite")
     
    *Index 이용하기 // 배열과 달리 순서 유지의 보장이 없음
     
    let index = beverage.startIndex
    beverage[Index]
    let index2 = beverage.index(after:beverage.startIndex)
    beverage[index2]
     
    *첫 번째 원소 접근:first
     
    beverage.first
     
    *배열 객체 생성 후 접근
     
    let beverageArray = Array(beverage)
    cs

     

    - 셋 : 원소 수정

    *추가:insert(_:)
     
    beverage.insert("Soda")
     
    *삭제:remove(_:)
     
    beverage.remove("Milk")
     
    *동일 원소 추가:기존 객체 덮어쓰기
    cs

     

    - 셋 연산

    #셋 집합 연산

     *교집합 : insersection

     *합집합 : union

     *대칭차집합 : symmetricDifference

     *차집합 : subtracting

    *교집합
     
    var set1:Set<Int> = [1,2,3]
    var set2:Set<Int> = [2,3,4]
     
    let set3 = set1.intersection(set2)
    set3 // [1,2,3] 과 [2,3,4]의 교집합인 {2,3} 출력
     
    *합집합
     
    let set4 = set1.union(set2)
    set4 // set1, set2의 모든 원소들을 출력 {2,3,1,4} 
    cs

    'Swift의 온도' 카테고리의 다른 글

    Swift #6 - nil과 옵셔널  (0) 2021.01.08
    Swift #5 - 제어문  (0) 2021.01.07
    Swift #3 - 문자와 문자열  (0) 2021.01.05
    Swift #2 - 데이터 타입과 연산자  (0) 2021.01.01
    Swift #1 - 개요  (0) 2020.12.31

    댓글