본문 바로가기
IT공부/IOS개발

스위프트 공부 _ 데이터 타입

by 놀고싶은 노자 2021. 5. 26.

오늘은 스위프트에서 제공하는 기본 데이터 타입에 대해 알아볼까 한다. 

데이터 타입이란 프로그램 내에서 다뤄지는 데이터의 종류를 뜻하는데, 스위프트의 데이터 타입은 구조체를 타입의 기반으로 삼아 

스위프트의 다양한 기능을 두루 사용하여 구현되어 있다. 

여기서 중요한 것은 스위프트의 기본 데이터 타입이 모두 구조체를 기반을 구현되어 있다는 점이다.

그리고 스위프트의 데이터 타입은 모두 대문자로 시작한다. !! int X Int O , double X Double O...

 

Bool 

Bool 타입은 true와 false만 가지는 데이터 타입이다. 

var {name} : Bool = true
{name}.toggle() // true -> false, false -> true

Character

character는 문자를 의미한다. 스위프트는 유니코드에서 지원하는 모든 언어 및 특수기호 등을 사용할 수 있다. 

var {name} : Character = "a"
var {name2} : Character = "♡"

Int

Int는  정수 타입을 의미한다. Int는 8비트, 16비트, 32비트, 64비트의 형태가 존재한다.

따라서, Int8, Int16, Int32, Int64으로 저장할 수 있는 데이터의 크기에 따라 타입이 분리된다.

이는 시스템 아키텍처에 따라 다른데, 32비트 아키텍처에서는 Int32가 Int로, 64비트 아키텍처에서는 Int64가 Int로 쓰인다.

var a : Int
var b : Int8
var c : Int16
var d : Int32
var e : Int64

print(Int.max) //9223372036854775807
print(Int8.max) //127
print(Int16.max) //32767
print(Int32.max) //2147483647
print(Int64.max) //9223372036854775807

 

UInt

UInt는 음의 정수를 포함하지 않는 정수 타입으로 대체적으로 Int타입과 비슷하다.

차이점은 Int타입보다 양의 정수를 더 크게 입력이 가능하다는 점이다.

시작점이 0으로 시작하기 때문에 데이터의 크기를 감안한 maximum은

음의 정수 표기도 포함한 Int에 비해 그 최대치가 더 크게 가질 수 있다.  

var ua : UInt
var ub : UInt8
var uc : UInt16
var ud : UInt32
var ue : UInt64

print(UInt.max) //18446744073709551615
print(UInt8.max) //255
print(UInt16.max) //65535
print(UInt32.max) //4294967295
print(UInt64.max) //18446744073709551615

 

Float, Double

Float과 Double은 실수 타입으로 부동소수 타입이라고 한다. 스위프트에서는 64비트까지 표현하는 Double과 32비트까지 표현하는 Float으로 구분된다. 

그리고 Float과 Double은 값에서 차이점이 나타나는데 

Float은 자동적으로 반올림을 해버리는 경향이 있다. Double은 Float보다는 그 경우가 덜하다.

var {name} : Float = 12.345
var {name2} : Double = 123.456

 

String

String은 문자열 타입으로 character와 마찬가지로 유니코드의 값을 가질 수 있다. 

var {name} : String = String()
{name} = "ab" + "cd"

var {name2} : String = "hello"

{name}.count // String factors num
{name}.isEmpty // is it Blank? -> true or false

{name} == {name2} // false
{name} != {name2} // true

{name}.hasPrefix("a") // is the prefix -> true or fasle
{name}.hasSuffix("d") // is the Suffix -> true or false

{name}.uppercased() // ABCD
{name}.lowercased() // abcd

var {text} : String = """
abc
def
ghi
"""
print({text}) 
/*
abc
def
ghi
*/

 

특수문자

스위프트는 문자열 내에서 일정 기능을 하는 특수문자가 있다. 백슬래쉬를 조합하여 사영하는데 그중 많이 쓰는 것으로는 다음이 있다.

\n 줄바꿈
\\ 백슬래쉬 표기
\" 큰따옴표 표기
\t 탭 한번
\0 문자열이 끝났음을 알리는 null문자

 

마지막으로 간단하게... 

Any, AnyObject, nil

Any는 스위프트의 모든 데이터 타입을 사용할 수 있는 정해지지 않았음을 알리는 타입이다. 

AnyObject는 Any보다는 한정된 값으로 클래스의 인스턴스만 할당할 수 있다. 

nil은 특정 타입이 아니라 아무것도 없음을 알리는 값이다. (자바에서의 null)

 

다음에는 간단하게 변수의 형 변환하는 법에 대해 알아보도록 하겠다.