공부/SWIFT

[SWIFT] 데이터 타입 기본 및 자료형(Int~Any까지)

알로하리미 2021. 3. 9. 11:44
728x90

1. Int와 Unit

Int : - 부터 + 까지 표현

Uint : 0 부터 + 까지표현 (unsigned Integer)

종류 : Int, Int8, Int16, Int32, Int64, Uint, Uint8, Uint16, Uint32, Uint64 (뒤에 붙은건 bit) 

* 스위프트는 데이터 타입에 엄격하다. Int와 Uint를 완전히 다른타입으로 인식하기에 값을 교환할때 많은 리소스를 소모 할 수 있으니 보통 Int타입으로 사용하는게 맞다. 
let tooLarge: Int = Int.max //.min .max로 최대 최소값을 확인 할 수 있다.
tooLarge = tooLarge + 1 //Int값 초과로 오류.

let decimalInt: Int = 28
let binaryInt: Int = 0b11100 //2진수표현
let octalInt: Int = 0o34     //8진수표현
let hexadecimal: Int = 0x1C  //16진수표현

 

 

2. Float, Double (실수-부동소숫점타입) 

Float : 64비트 환경에서 6자리 숫자까지만 표현 가능

Double : 64비트 환겨엥서 15자리 숫자까지 표현 가능 

애매하다 싶으면 그냥 Double형 쓰는게 나음.

* 스위프트4.2부터 임의의수를 만드는 radom(in:) 메서드 추가됨

Int.random(in: -100...100)
UInt.random(in: 1...30)
Double.random(in: 1.5...4.3)
Float.random(in: -0.5...1.5)

 

 

3. Bool

값 : true, fasle
var godotHasArrived = false

let numbers = 1...5
let containsTen = numbers.contains(10) //number변수가 10을 포함하냐
print(containsTen)
// Prints "false"

let (a, b) = (100, 101)
let aFirst = a < b
print(aFirst)
// Prints "true"


var i = 5
while i {  //i가 Bool타입이 아니기때문에 에러
    print(i)
    i -= 1
}

while i != 0 {
    print(i)
    i -= 1
}

 

 

4. Character

스위프트는 유니코드9문자를 사용하므로 유니코드에서 지원하는 모든언어및 특수기호까지 사용할 수 있습니다.

let bird: Character = "🐥"
let greeting: String = "Hello! 🐥"
print("Length: \(greeting.count)")

//문자열의 각 문자는 하나 이상의 유니 코드 스칼라 값으로 구성 될 수 있으므로 
//문자열의 문자 수는 유니 코드 스칼라 값 표현의 길이 
//또는 특정 2 진 표현의 문자열 길이와 일치하지 않을 수 있습니다.
print("Unicode scalar value count: \(greeting.unicodeScalars.count)")
// Prints "Unicode scalar value count: 8"
print("UTF-8 representation count: \(greeting.utf8.count)")
// Prints "UTF-8 representation count: 11"

//Character인스턴스는 확장 된 자소 클러스터 로 
//함께 그룹화 된 하나 이상의 유니 코드 스칼라 값으로 구성됩니다 .
let usFlag: Character = "\u{1F1FA}\u{1F1F8}"
print(usFlag)// Prints "🇺🇸"

 

 

5. String

유니코드 9사용 가능 값의 앞뒤에 큰 따옴표를 사용하여 표현.

let greeting = "Welcome!"
let name: String = "Rosa"
let personalizedGreeting: String = "Welcome, \(name)!"
// personalizedGreeting == "Welcome, Rosa!"


let price: Int = 2
let number: Int = 3
// 문자열 보간법으로 표현할수 있고 연산도 가능하다.
let cookiePrice = "\(number) cookies: $\(price * number)."
// cookiePrice == "3 cookies: $6."


// + 로 문자열을 합칠수 있다.
let longerGreeting: String = greeting + " We're glad you're here!"
// longerGreeting == "Welcome! We're glad you're here!"


// """로 여러줄 문자열 표현이 가능하다.
// """써주고 한줄 내려서 써야한다. 마지막 줄도 """내려서 써야한다
// 마지막 """ 위치에 따라 들여쓰기가 정해진다.
let banner = """
          __,
         (           o  /) _/_
          `.  , , , ,  //  /
        (___)(_(_/_(_ //_ (__
                     /)
                    (/
        """
        
//문자열 요소 접근
let name = "Marie Curie"
let firstSpace = name.firstIndex(of: " ") ?? name.endIndex
let firstName = name[..<firstSpace]
// firstName == "Marie"
print("\(name)'s first name has \(firstName.count) letters.")
// Prints "Marie Curie's first name has 5 letters."


특수문자 설명
\n 줄바꿈문자
\\ 문자열 내에서 백슬래시를 표현하고자할때 사용
\" 문자열 내에서 큰따옴표를 표현하고자 할때 사용
\t 탭문자
\O 문자열이 끝났음을 알리는 null문자

 

6. Any , AnyObject와 nil

Any : 스위프트의 모든 데이터 타입을 사용할 수 있다는 뜻

AnyObject : Any보다는 조금 한정된 의미 클래스의 인스턴스만 할당 가능

nil : 없음을 나타내는 스위프트의 키워드 (다른언어에서 null같은 의미)

Any, AnyObject사용시 타입확인 및 변환을 꼭 해줘야한다.