본문 바로가기

iOS-Study

iOS Study : 2주차 내용정리 - 기초 개념, 데이터 타입

iOS 기초개념

이름짓기

  • swift는 기본적으로 Camel Case를 사용한다.
    • Lower Camel Case : function, method, variable, constant
      ex) someVariableName
    • Upper Camel Case : typeclass, struct, enum, extension...)
      ex) Person, Point, Week
  • 대소문자를 구분한다.

콘솔로그

  • print : 단순 문자열 출력하는 함수
  • dump : 인스턴스의 자세한 설명(description 프로퍼티)까지 출력하는 함수

문자열 보간법

  • String Interplation
  • 프로그램 실행 중 문자열 내에 변수 또는 실질적인 값을 표현하기 위해 사용
  • \()

상수

  • 차후에 변경이 불가능하다,
  • 상수 선언 키워드 : let
  • 상수의 선언
    • let 이름: 타입 = 값
    • 값의 타입이 명확하면 타입은 생략 가능

변수

  • 차후에 변경이 가능하다.
  • 변수 선언 키워드 : var
  • 변수의 선언
    • var 이름: 타입 = 값
    • 값의 타입이 명확하면 타입은 생략 가능

 

데이터 타입

swift는 데이터 타입에 매우 엄격하다.

기본 데이터 타입

  • Bool 타입
    • ture와 false 두 가지 값만 가지는 타입
    • 선언시 0이나 1을 쓰면 Int 타입의 value로 인식하여 에러 발생
    • 예시 : var someBool: Bool = true
  • Int 타입
    • 정수형 타입 : 양수, 0 , 음수
    • 실수를 넣을 경우 에러 발생
    • 예시 : var someInt: Int = -100
  • UInt 타입
    • 부호가 없는 양의 정수
    • 음수를 넣을 경우 에러 발생
    • Int타입의 변수를 UInt타입의 변수에 넣을 경우 에러가 발생한다 -> 데이터 타입에 엄격하기 때문
    • 예시 : var someUInt: UInt = 100
  • Float 타입
    • 32bit 부동소수형 타입
    • 정수 타입을 넣어도 문제 없음
    • 예시 : var someFloat: Float = 3.14
  • Double타입
    • 64bit 부동소수형 타입
    • Double타입 변수에 Float타입의 변수를 넣으면 에러 발생
    • 예시 : var someDouble: Double = 3.14
  • Character타입
    • 한 글자(문자)를 표현하기 위한 데이터 타입
    • 유니코드로 표현할 수 있는 모든 문자를 넣을 수 있음
    • ""를 사용
    • 예시 : var someCharacter: Character = "가"
  • String타입
    • 여러 문자를 표현 가능
    • 연산자 + 를 사용해서 합해서 사용 가능
    • 문자열인 String타입도 문자타입인 Character타입 사용 불가능
    • 예시 : var someString: String = "하하하"
               someString = someString + "웃으면 복이와요"

 

데이터 타입 위치에 들어갈 수 있는 특별한 친구들

  • Any
    • swift의 모든 타입을 지칭하는 키워드
    • Any타입으로 선언된 변수는 다른 특정 타입의 변수에 넣을 수 없다.
    • 예시 : var someAny: Any = 100
                someAny = "안녕하세요"
                someAny = 3.14  
  • AnyObject
    • 모든 클래스 타입을 지칭하는 프로토콜
    • 클래스의 인스턴스만 사용 가능
    • 예시 : class SomeClass {}
                var someAnyObject: AnyObject = SomeClass()
  • nil
    • 없음을 의미하는 키워드
    • Any를 사용하여 선언된 변수에도 넣을 수 없음

 

컬렉션 타입

컬렉션 타입은 여러 값들을 묶어서 하나의 변수로 사용 가능하게 해준다.

  • Array
    • 순서가 있는 리스트 컬렉션
    • var integers: Array<Int> = Array<Int>()  //빈 Int Array생성
      integers.append(1)  //1을 Array에 넣어줌
      integers.append(100.1)   //float,Double 타입을 넣으면 에러 발생

      integers.contain(1)  //contains를 사용하여 Array에 값이 있는지 확인하여 true,false로 반환

      integers.remove(at : 0)  //인덱스 번호를 지정해서 삭제 가능
      integers.removeLast() //마지막 인덱스 값을 삭제
      integers.removeAll()  //모든 값을 삭제

      integers.count  //몇 개의 값이 들어있는지 확인
    • let을 사용하여 선언하면 추가나 수정 불가능

 

  •  Dictionary
    • 키와 값의 쌍으로 이루어진 컬렉션
    • Key가 String타입이고 Value가 Any인 빈 Dictionary생성
      var anyDictionary: Dictionary<String, Any> = [String, Any]()
      anyDictionary[
      "someKey"] = "value"  // 키에 해당하는 값 할당
      anyDictionary[
      "anotherKey"] = 100
      print(anyDictionary)  // ["someKey": "value", "anotherKey": 100]

      anyDictionary[
      "someKey"] = "dictionary"  // 키에 해당하는 값 변경
      print(anyDictionary) // ["someKey": "dictionary", "anotherKey": 100]  
      anyDictionary.removeValue(forKey:
      "anotherKey"// 키에 해당하는 값 제거
      anyDictionary[
      "someKey"] = nil
      print(anyDictionary)
    • let을 사용하여 선언하면 추가나 수정 불가능

  • Set
    • 순서가 없고, 멤버가 유일한 컬렉션
    • var integerSet: Set<Int> = Set<Int>()  //비어있는 Int Set 생성
      integerSet.insert(1)  //insert를 이용하여 값 넣어줌
      integerSet.insert(100)
      integerSet.insert(100)   //중복된 값은 넣을 수 없음

      Array와 같은 방식으로 contains와 count, remove사용

    • 집합 연산에 많이 활용