๐ก Swift ๋ฐ์ดํฐ ํ์ ํน์ง
- ๋ชจ๋ ๋ฐ์ดํฐ ํ์ ์ ์ด๋ฆ์ ์ฒซ ๊ธ์๋ฅผ ๋๋ฌธ์๋ก ์ ๋ ฅํ๋ค.
- ๋ชจ๋ ๋ฐ์ดํฐ ํ์ (Int, Float, Double, Bool, String, Array, Dictionary, Set ๋ฑ)์ ๋ชจ๋ Struct (๊ตฌ์กฐ์ฒด)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํ๋์ด ์๋ค.
(์ฝ๊ฒ ์ค๋ช ํ์๋ฉด, ์ฐ๋ฆฌ๊ฐ ์ซ์๋ฅผ ํํํ๊ณ ์ถ์ ๋ Int ๋ผ๊ณ ์ ๋ ฅํด์ ๋ฐ๋ก ์ฌ์ฉํ ์ ์๋๋ก Swift์ ๋ฏธ๋ฆฌ ๊ตฌ์กฐ์ฒด ๋ผ๋ ๊ฒ์ผ๋ก ๋ง๋ค์ด์ ธ ์๋ค๋ ์๋ฏธ)
<-> Reference Type : class, function, closure ๋ฑ
- ์ค์ํํธ๋ ๋ฐ์ดํฐ ํ์ ์๊ฒฉํ๊ฒ ๊ด๋ฆฌํ๋ฏ๋ก ์์์ ์ผ๋ก ์ด๋ฃจ์ด์ง๋ ๋ฐ์ดํฐ ํ์ ์ ๋ณํ์ผ๋ก๋ถํฐ ์ผ์ด๋ ์ ์๋ ์๊ธฐ์น ์์ ๊ฒฐ๊ณผ๋ฅผ ์ผ์ผํค๋ ๊ฒฝ์ฐ๋ฅผ ๋ฐฉ์งํด์ผ ํ๋ค.
1. Swift ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์
1 - 1. ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์ (Bool, Int, UInt, Float, Double, Character, String)
1 - 2. Any, AnyObject, nil, Typealias
2. ์ปฌ๋ ์
ํ์
(Array, Dictionary, Set)
>> https://lxxyeon.tistory.com/140
3. ์ด๊ฑฐํ ํ์ (enum)
https://lxxyeon.tistory.com/143
1. Swift ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์
1 - 1. ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์
Bool | true์ false๋ง์ ๊ฐ์ผ๋ก ๊ฐ์ง๋ ํ์ |
Int | ์ ์ ํ์ . ํ์ฌ๋ ๊ธฐ๋ณธ์ ์ผ๋ก 64๋นํธ ์ ์ํ. |
UInt | ์์ ์ ์ ํ์ . ํ์ฌ๋ ๊ธฐ๋ณธ์ ์ผ๋ก 64๋นํธ ์์ ์ ์ํ. |
Float | ์ค์ ํ์ . 32๋นํธ ๋ถ๋์์ํ. |
Double | ์ค์ํ์ . 64๋นํธ ๋ถ๋์์ํ. |
Character | ๋ฌธ์ ํ์ . ์ ๋์ฝ๋ ์ฌ์ฉ. ํฐ๋ฐ์ดํ(“”) ์ฌ์ฉ. |
String | ๋ฌธ์์ด ํ์ . ์ ๋์ฝ๋ ์ฌ์ฉ. ํฐ๋ฐ์ดํ(“”) ์ฌ์ฉ. |
๐ Bool
- ๋ถ(bool) or ๋ถ๋ฆฌ์ธ(boolean)
- true, false์ ๋จ์ผ ๊ฐ์ ๊ฐ์ง
var someBool: Bool = true
someBool = false
// someBool = 0 // ์ปดํ์ผ ์ค๋ฅ๋ฐ์ >> 0,1 ์ int ํ์
!!!!์ผ๋ก ์ธ์
[์ผํญ์ฐ์ฐ์]
- a ? b : c
- a๊ฐ true๋ฉด b๋ฐํ, false๋ฉด c๋ฐํ
let test: Int = 1
let res = (test == 1) ? "true": "false"
print(res) //true
๐ Int, UInt
- ์ ์(Integer)
- Int : ์์๋ถํฐ ์์(Int8 : -128 ~ 127)
// Int - Int8, Int16, Int32, Int64
// ex) Int8 - Int๋ฅผ 8bitํฌ๊ธฐ๋ก ์ฌ์ฉํ๊ฒ ๋ค.
// ์ผ๋ฐ์ ์ผ๋ก Int๋ ์คํ๋๋ ํ๊ฒฝ์ CPU์ ๋ง์ถ์ด ๊ฐ์ ๋ฒ์๊ฐ ๋ณํจ
// ex) 64bit OS -> Int = Int64, 32bit OS -> Int = Int32
// i ๊ฐ ๋๋ฌธ์
var num : Int = 0;
var num8 : Int8 = 0;
var num16 : Int16 = 0;
var num32 : Int32 = 0;
var num64 : Int64 = 0;
// Int๋ SignedInteger๋ฅผ ๊ตฌํํ ๊ตฌ์กฐ์ฒด์ ์ผ์ข
// -> Int.init(), Int.max, Int.min ๋ฑ์ ๋ณ์ ๋ฐ ๋ฉ์๋๋ค์ด ์กด์ฌ
var no0 : Int = Int.init(); // 0์ผ๋ก ์ด๊ธฐํ
var no1 : Int = Int.init(1); // 1๋ก ์ด๊ธฐํ
print("Int : " + String(Int.min) + " ~ " + String(Int.max));
print("Int8 : " + String(Int8.min) + " ~ " + String(Int8.max));
print("Int16 : " + String(Int16.min) + " ~ " + String(Int16.max));
print("Int32 : " + String(Int32.min) + " ~ " + String(Int32.max));
print("Int64 : " + String(Int64.min) + " ~ " + String(Int64.max));
[์คํ ๊ฒฐ๊ณผ]
- UInt : ์์๋ง(UInt8 : 0~255)
// UInt - UInt8, UInt16, UInt32, UInt64
// UInt๋ Int์ ๋์ผํ๊ฒ ์คํ๋๋ ํ๊ฒฝ์ CPU์ ๋ง์ถ์ด ๊ฐ์ ๋ฒ์๊ฐ ๋ณํจ
var num : UInt = 0;
var num8 : UInt8 = 0;
var num16 : UInt16 = 0;
var num32 : UInt32 = 0;
var num64 : UInt64 = 0;
// UInt๋ UnSignedInteger๋ฅผ ๊ตฌํํ ๊ตฌ์กฐ์ฒด์ ์ผ์ข
// -> UInt.init(), UInt.max, UInt.min ๋ฑ์ ๋ณ์ ๋ฐ ๋ฉ์๋๋ค์ด ์กด์ฌ
var no0 : UInt = UInt.init(); // 0์ผ๋ก ์ด๊ธฐํ
var no1 : UInt = UInt.init(1); // 1๋ก ์ด๊ธฐํ
print("UInt : " + String(UInt.min) + " ~ " + String(UInt.max));
print("UInt8 : " + String(UInt8.min) + " ~ " + String(UInt8.max));
print("UInt16 : " + String(UInt16.min) + " ~ " + String(UInt16.max));
print("UInt32 : " + String(UInt32.min) + " ~ " + String(UInt32.max));
print("UInt64 : " + String(UInt64.min) + " ~ " + String(UInt64.max));
[์คํ ๊ฒฐ๊ณผ]
๐ Float, Double
- ์ค์, ๋ถ๋์์์ (Floating-Point Numbers)
- Float : 32Bit > ์์์ ์ดํ 6์๋ฆฌ
- Double : 64Bit > ์์์ ์ดํ 15์๋ฆฌ
let float_pi : Float = 3.141592653589793238462643383279502884197169399375105820
let double_pi : Double = 3.141592653589793238462643383279502884197169399375105820
print("Float์ผ๋ก ํํ ๊ฐ๋ฅํ ์ค์ : \(float_pi)")
print("Double์ผ๋ก ํํ ๊ฐ๋ฅํ ์ค์ : \(double_pi)")
[์คํ ๊ฒฐ๊ณผ]
๐ Character, String
- ๋ฌธ์
- ํฐ ๋ฐ์ดํ(")๋ก ํํ
//Character
var someCharacter: Character = "โค๏ธ"
someCharacter = "๊ฐ"
// someCharacter = "ํํํ" // ์ปดํ์ผ ์ค๋ฅ๋ฐ์ >> ๋ฌธ์์ด ํ์
//for-in loop๋ก ์ ๊ทผ
for character in "Dog!๐ถ" {
print(character)
}
// D
// o
// g
// !
// ๐ถ
//๋ฌธ์ ๋ฐฐ์ด
let catCharacters: [Character] = ["C", "a", "t", "!", "๐ฑ"]
let catString = String(catCharacters)
print(catString)
// Prints "Cat!๐ฑ"
- ๋ฌธ์์ด
- ํฐ ๋ฐ์ดํ(")๋ก ํํ
- ๋ฌธ์์ด ์ฐ๊ฒฐ : + ์ฐ์ฌ์ ์ฌ์ฉ
- ๋น ๋ฌธ์์ด ํ์ธ : isEmpty ํจ์ ์ฌ์ฉ
//String
var someString: String = "ํํํ"
someString += "ํธํธํธ"
์ฌ๋ฌ์ค ๋ฌธ์์ด์ ํฐ๋ฐ์ดํ ์ธ ๊ฐ ์ฌ์ฉ.
someString = """
์ฌ๋ฌ์ค ๋ฌธ์์ด์
์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฒซ ์ค์ ๊ฒน๋ฐ์ดํ ์ธ ๊ฐ,
๋ง์ง๋ง ์ค์ ๊ฒน๋ฐ์ดํ ์ธ ๊ฐ๋ฅผ
์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
"""
someString = """
๊ฒน๋ฐ์ดํ ์ธ ๊ฐ์ธ ์ค(์ฒซ์ค, ๋์ค)์์
์ค ๋ฐ๊ฟ์ ํ์ง ์์ผ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
"""
/*
someString = """์ค๋ฅ๋ฐ์
์ค๋ฅ๋ฐ์"""
*/
//๋น ๋ฌธ์์ด ์ด๊ธฐํ
var emtpryString = ""
var anotherEmptyString = String()
//๋น ๋ฌธ์์ด ์ฌ๋ถ ํ์ธ - isEmpty ์ฌ์ฉ
if emptyString.isEmpty {
print("Nothing to see here")
}
// Prints "Nothing to see here"โ
1 - 2. Any, AnyObject, nil, Typealias
๐ Any
- Swift์ ํจ์ ํ์ ์ ํฌํจํด ๋ชจ๋ ํ์ ์ ์ง์นญํ๋ ํค์๋(Int, String, ํจ์, ํด๋ก์ ๊น์ง ํฌํจ)
var someAny: Any = 100
someAny = "์ด๋ค ํ์
๋ ์์ฉ ๊ฐ๋ฅํฉ๋๋ค"
someAny = 123.12
//Double ํ์
์ ๋ณ์์ Any ํ์
์ ๊ฐ์ ๋ฃ์ ์ ์์!!
//let someDouble : Double = someAny >> ์ค๋ฅ!!!
*json ํ์ฑํ ๋, ๋์ ๋๋ฆฌ ์ฌ์ฉํ๋๋ฐ key๋ ์ฃผ๋ก string, value๋ ํ์ ์ด ๋ค ๋ค๋ฅด๋๊น Any๋ก ๋ง์ด ํจ.
๐ AnyObject
- class instance๋ง ๋ค๋ฃธ, ๋ชจ๋ ํด๋์ค ํ์ ์ ์ง์นญํ๋ ํ๋กํ ์ฝ
class SomeClass {}
var someAnyObject: AnyObject = SomeClass()
//AnyObject๋ ํด๋์ค์ ์ธ์คํด์ค๋ง ์์ฉ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ํด๋์ค์ ์ธ์คํด์ค๊ฐ ์๋๋ฉด ํ ๋นํ ์ ์์ต๋๋ค.
//someAnyObject = 123.12 // ์ปดํ์ผ ์ค๋ฅ๋ฐ์
๐ nil
- ์์์ ์๋ฏธํ๋ ํค์๋ (๋ค๋ฅธ ์ธ์ด์ NULL, Null, null ๋ฑ๊ณผ ๊ฐ์ ํํ)
- ์๋ ์ฝ๋์์ someAny๋ Any ํ์
์ด๊ณ , someAnyObject๋ AnyObject ํ์
์ด๊ธฐ ๋๋ฌธ์ nil์ ํ ๋นํ ์ ์์ต๋๋ค.
nil์ ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ์ ์ต์ ๋ ํํธ์์ ๋ค๋ฃฐ ์์ .
someAny = nil // ์ปดํ์ผ ์ค๋ฅ๋ฐ์ >> any ํ์
>> ์ด๋ค ๋ฐ์ดํฐ๊ฐ๋ ๋์ง๋ง ๋น๊ฐ์ ์๋จ
someAnyObject = nil // ์ปดํ์ผ ์ค๋ฅ๋ฐ์
๐ Typealias
- ํ์ ๋ณ์นญ : ๊ธฐ์กด์ ์ ์ธ๋์ด์๋ ๋ฐ์ดํฐ ํ์ ์ ์์๋ก ๋ค๋ฅธ ์ด๋ฆ์ ๋ถ์ฌ
typealias MyInt = Int
typealias MyString = String
let num: MyInt = 10
var title: MyString = "techYeon"
'๐ iOS > Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift] ์ค์ํํธ ์กฐ๊ฑด๋ฌธ(Conditional Statements) (0) | 2022.02.23 |
---|---|
[Swift] ์ค์ํํธ ๋ฐ์ดํฐ ํ์ (Swift data type) - 3. ์ด๊ฑฐํ ํ์ (enum) (0) | 2022.02.22 |
[Swift] ํด๋ก์ (Closure) vs ๋ธ๋ก(Block) ํจ์ ์บก์ณ๋ฐฉ์ ๋น๊ต (0) | 2021.08.31 |
[Swift] ํด๋ก์ ธ(Closure) ๊ธฐ๋ณธ (0) | 2021.08.26 |
[Swift] String(describing:) ์ฌ์ฉํ์ฌ ํ์ฌ ํด๋์ค ์ด๋ฆ ์ป๊ธฐ (0) | 2021.08.06 |