1. Swift ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์
1 - 1. ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์ (Bool, Int, UInt, Float, Double, Character, String)
1 - 2. Any, AnyObject, nil, Typealias
2. ์ปฌ๋ ์ ํ์ (Array, Dictionary, Set)
3. ์ด๊ฑฐํ ํ์ (enum)
2. ์ปฌ๋ ์ ํ์
๊ฐ๋ฐํ๋ค ๋ณด๋ฉด, ์๋ก ์ฐ๊ด๋ ๊ฐ๋ค์ ์ปฌ๋ ์ (Colllection)์ผ๋ก ํ๋ฒ์ ์ฒ๋ฆฌํด์ผ ํ ์ผ์ด ๋ง๋ค.
Swift์์ ์ ๊ณตํ๋ ์ปฌ๋ ์ ํ์ ์ ๋ํด ์์๋ณด์!
[Contents]
- ๋ฐฐ์ด(Array)
- ๋์ ๋๋ฆฌ(Dictionary)
- ์งํฉ(Set)
๐ Array
- Array๋ ๋ฉค๋ฒ๊ฐ ์์(์ธ๋ฑ์ค)๋ฅผ ๊ฐ์ง ๋ฆฌ์คํธ ํํ์ ์ปฌ๋ ์ ํ์
- ํ์์ ๋ฐ๋ผ ์๋์ผ๋ก ๋ฒํผ์ ํฌ๊ธฐ ์กฐ์ ๊ฐ๋ฅํ์ฌ ์์์ ์ฝ์ ๋ฐ ์ญ์ ๊ฐ ์์ ๋กญ๋ค.
- ์ค๋ณต ๊ฐ๋ฅ
๐ก ๋ฐฐ์ด ์ด๊ธฐํ 1. ๋ฐฐ์ด ์์ฑ ๋ฐ ์ด๊ธฐํํ๊ธฐ
// ๋น Int Array ์์ฑ
var ๋ฐฐ์ด์ด๋ฆ: Array<ํ์
> = Array<ํ์
>() // ๊ธฐ๋ณธ
var integers: Array<Int> = Array<Int>()
// ๊ฐ์ ํํ
var integers: Array<Int> = [Int]()
var integers: Array<Int> = []
var integers: [Int] = Array<Int>()
var integers: [Int] = [Int]()
var integers: [Int] = []
var integers = [Int]()
์ค์ ์ฝ๋๋ฅผ ์งค๋๋ ๊ฐ๋จํ๊ฒ ๋จ์ถ ๋ฌธ๋ฒ์ ์ฌ์ฉํ์ฌ ๋๊ดํธ ์ฌ์ด์ ๋ฐฐ์ด์ ํ์ ๋ง ๋ฃ์ด์ฃผ๋ฉด ๊ฐ๋จํ๊ฒ ๋! ๐
let arr1: [Int]
var arr2: [String]
๐ก ๋ฐฐ์ด ์ด๊ธฐํ 2. init(repeating:count:) ๋ฉ์๋ ์ฌ์ฉํด์ ์ด๊ธฐํ ํ๊ธฐ
๋ฐ๋ณตํ ๋ฐ์ดํฐ์ ํ์๋ฅผ ์ง์ ํด ์ฃผ๋ฉด, ๋ฐฐ์ด์ ์ค์ ์ ๋ง์ถ์ด ์์ฑ๋๋ค.
let arrayRepeating1 = Array(repeating: 1, count: 5)
//[1, 1, 1, 1, 1]
let arrayRepeating2 = Array(repeating: "A", count: 5)
//["A", "A", "A", "A", "A"]
๐ก ๋ฐฐ์ด ์ด๊ธฐํ 3. ์์์ ๊ฐ์ ๋ฃ์ด์ ์ด๊ธฐํ ํ๊ธฐ
let arr = Array(1...10)
// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
๐ก ํ์ ์ถ๋ก
๋ฐฐ์ด์ ๊ฐ์ด ์๋ ๊ฒฝ์ฐ, ๋ช ์ํ์ง ์์๋ Xcode์ ์ปดํ์ผ๋ฌ(Apple LLVM/Clang)๊ฐ ์์์ ๊ฒฐ์ ํด์ค๋ค.
๋จ, ๋น ๋ฐฐ์ด์ธ ๊ฒฝ์ฐ ํ์ ์ ๊ผญ ๋ช ์ ํด์ฃผ์ด์ผ ํ๋ค.
// ๊ฐ์ด ์๋ ๊ฒฝ์ฐ ํ์
์ ๋ช
์ํ์ง ์์๋ ์์์ ๊ฒฐ์ ๋ฉ๋๋ค.
var arr2 = [1,2,3,4]
// Error: ๋น ๋ฐฐ์ด ์ ์ธ์ ํ์
๋ช
์ ํ์!!
var arr1 = []
๐ก Any ํ์ ๋ฐฐ์ด ์์ฑ ๋ฐ ์ด๊ธฐํ
๋ฐฐ์ด์ ๋ค๋ฅธ ํ์ ์ ๊ฐ๋ค์ ๋ฃ๊ณ ์ถ์๋๋ Any ํ์ ๋ช ์!!
var integers: Any = [1, "2", 1.0]
// Error! - ๋ค๋ฅธ ํ์
์ ๊ฐ๋ค์ ๋ฃ์ ๋๋ Any ํ์
๋ช
์ ํ์!!
let arr = [1, "์ด", 3, "์ฌ"]
๐ก ๋ฐฐ์ด ์์ฃผ ์ฌ์ฉํ๋ ๋ฉ์๋
- ๋ฐฐ์ด์ ์์ ์ถ๊ฐํ๊ธฐ
- append(_:) : ๋์ ๋ฐฐ์ด ์์ ์ถ๊ฐ
- insert (_:at:) : ์ํ๋ ์ธ๋ฑ์ค์ ๋ฐฐ์ด ์์ ์ถ๊ฐ, at: ์ถ๊ฐํ ์์น์ ์ธ๋ฑ์ค
- contentsOf : ๊ฐ ์ฌ๋ฌ๊ฐ ์ถ๊ฐ > ๋ง์ง๋ง ์ธ๋ฑ์ค์ ์ถ๊ฐ๋จ
- += ์ฐ์ฐ์๋ก๋ ์ถ๊ฐ ๊ฐ๋ฅ
- remove(at:) : ๋ฐฐ์ด ์์ ์ญ์ ํ๊ธฐ
- isEmpty : ๋น ๋ฐฐ์ด ํ์ธ(true or false)
- โญ๏ธ Swift ์์๋ ๋น ๋ฐฐ์ด์ธ์ง ํ์ธ ํ ๋, array.count == 0 ์ด ๊ตฌ๋ฌธ๋ณด๋จ, array.isEmpty๋ฅผ ์ฌ์ฉ
- count : ๋ฐฐ์ด์ ๋ค์ด์๋ ๊ฐ์ ๊ฐ์ ๊ฒ์ฌ
var nums = [1,2,3]
var emptyArray: [Int] = []
// .count : ๋ฐฐ์ด์ ๋ค์ด์๋ ๊ฐ์ ๊ฐ์ ๊ฒ์ฌ
print(nums.count) //3
// .append : ๋์ ๋ฐฐ์ด ์์ ์ถ๊ฐ
nums.append(1) // [1, 2, 3, 1]
// .insert : ์ํ๋ ์ธ๋ฑ์ค์ ๋ฐฐ์ด ์์ ์ถ๊ฐ
nums.insert(10, at: 2) // [1, 2, 10, 3, 1]
// ERROR - ํ ๋น ๋ฒ์ ์ด๊ณผ : ๋ง์ง๋ง ์ธ๋ฑ์ค ๋ค์๊น์ง๋ง ๊ฐ๋ฅ
//nums.insert(10, at: 5)
let newNum = [4, 5, 6]
// += ์ฐ์ฐ์ ์ฌ์ฉํ์ฌ ์์ ์ถ๊ฐํ๊ธฐ
nums += newNum
// .isEmpty : ๋น ๋ฐฐ์ด ํ์ธ
nums.isEmpty // false
emptyArray.isEmpty // true
// .contentsOf : ๊ฐ ์ฌ๋ฌ๊ฐ ์ถ๊ฐ > ๋ง์ง๋ง ์ธ๋ฑ์ค์ ์ถ๊ฐ๋จ
nums.append(contentsOf: [2, 3]) //[1, 2, 10, 3, 1, 2, 3]
nums.append(contentsOf: 4...6) //[1, 2, 10, 3, 1, 2, 3, 4, 5, 6]
nums.insert(contentsOf: [20, 30], at: 2) //[1, 2, 20, 30, 10, 3, 1, 2, 3, 4, 5, 6]
// contains : ๋ฉค๋ฒ ํฌํจ ์ฌ๋ถ ํ์ธ
print(nums.contains(100)) //"false\n"
print(nums.contains(99)) //"false\n"
// remove : ๋ฉค๋ฒ ์ญ์
nums.remove(at: 0) //0๋ฒ ์ธ๋ฑ์ค๊ฐ ์ญ์
nums.removeLast() //๋ง์ง๋ง์ญ์
//nums.removeAll() //๋ชจ๋ ์ญ์
//firstindex : ๊ฐ์ ์์น ์ฐพ๊ธฐ, swift4.2 ๋ถํฐ Index deprecated
//func firstIndex(of element: Element) -> Int? (Optional ํ์
!!!)
print(nums.firstIndex(of: 10)!)
//์ต์
๋ ๋ฐ์ธ๋ฉ์ ์ด์ฉํด์ ์ถ์ถํ๊ธฐ
if let location = nums.firstIndex(of: 3){
// print(nums.firstIndex(of: 100))
print("์์น : \(location)") //์์น :4
}else{
print("ํด๋นํ๋ ๊ฐ์ด ์กด์ฌํ์ง ์๋๋ค")
}
- sort ๋ฉ์๋ ์ฌ์ฉํ์ฌ ์ ๋ ฌํ๊ธฐ
- ์ค๋ฆ์ฐจ์ : <
- ๋ด๋ฆผ์ฐจ์ : >
var array = [1, 10, 30 , 12, 11]
//์ค๋ฆ์ฐจ์
array.sort(by: <) //[1, 10, 11, 12, 30]
//๋ด๋ฆผ์ฐจ์
array.sort(by: >) //[30, 12, 11, 10, 1]
๐ก ๋ฐฐ์ด์ ์์ ์ ๊ทผ ๊ด๋ จ ๋ฉ์๋
- Subscript๋ก ์ ๊ทผํ๊ธฐ
- ๋๊ดํธ ์ฐ์ฐ์ ์ฌ์ฉํ ๋ฒ์๋ก ์ ๊ทผํ๊ธฐ
- ์์ฑ์ผ๋ก ์ ๊ทผํ๊ธฐ
// 1. Subscript๋ก ์ ๊ทผํ๊ธฐ
array1[0] // 1
array1[1] // 2
// 2. ๋ฒ์๋ก ์ ๊ทผํ๊ธฐ
array1[0...1] // [1, 2]
// 3. ์์ฑ์ผ๋ก ์ ๊ทผํ๊ธฐ
array1.first // Optional(1)
array1.last // Optional(3)
๐ก ๋ฐฐ์ด ๊ฒ์ํ๊ธฐ
var array1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
// 1. contains : ํด๋น ๊ฐ์ด ๋ฐฐ์ด์ ์กด์ฌํ๋์ง Bool๋ก ๋ฆฌํด
array1.contains(1) //true
array1.contains(10) //false
// 1-1. contains + ํด๋ก์ : ์ง์ ๊ฒ์ ๊ตฌ๋๋ฅผ ๊ตฌํ (์์ : ์ง์๊ฐ ํ๋๋ผ๋ ์์ผ๋ฉด true)
array1.contains { num in // true
num % 2 == 0
}
// 2. first + ํด๋ก์ : ํด๋ก์ ์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๊ฐ์ฅ ์ฒซ ๋ฒ์งธ ์์์ "๊ฐ"์ ๋ฆฌํด, ์๋ค๋ฉด nil์ ๋ฆฌํด
array1.first { num in // Optional(2)
num % 2 == 0
}
// 3. firstIndex + ํด๋ก์ : ํด๋ก์ ์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๊ฐ์ฅ ์ฒซ ๋ฒ์งธ ์์์ "Index"์ ๋ฆฌํด, ์๋ค๋ฉด nil์ ๋ฆฌํด
array1.firstIndex { num in // Optional(1)
num % 2 == 0
}
// 4. last + ํด๋ก์ : ํด๋ก์ ์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๊ฐ์ฅ ๋ง์ง๋ง ์์์ "๊ฐ"์ ๋ฆฌํด, ์๋ค๋ฉด nil์ ๋ฆฌํด
array1.last { num in // Optional(6)
num % 2 == 0
}
// 5. lastIndex + ํด๋ก์ : ํด๋ก์ ์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๊ฐ์ฅ ๋ง์ง๋ง ์์์ "Index"์ ๋ฆฌํด, ์๋ค๋ฉด nil์ ๋ฆฌํด
array1.lastIndex { num in // Optional(5)
num % 2 == 0
}
๐ก ๋ฐฐ์ด ๋น๊ต
- == : ๋ฐฐ์ด์ด ๊ฐ์์ง ๋น๊ตํ ๋ ์ฌ์ฉ(์์๊น์ง ๊ฐ์์ผ true ๋ฆฌํด!)
var colorList = ["red", "orange", "yellow"]
//let์ผ๋ก ์ ์ธํ ๋ฐฐ์ด์ ๋ณ๊ฒฝ ๋ถ๊ฐ!!
let newColor = ["red", "orange", "yellow"]
//๋ฐฐ์ด ๋น๊ต(์์๋ ๊ฐ์์ผ ํจ!)
let equelArray = (colorList == newColor) //true
์ถ๊ฐ๋ก, ๋ฐฐ์ด ๋ค๋ฃฐ๋ ๊ฐ์ฅ ์ค์ํ ์ธ ๊ฐ์ง map, filter, reduce๋ ์๋์์ ํ์ธ!!
๐ Dictionary
- ํค์ ๊ฐ์ ์์ผ๋ก ์ด๋ฃจ์ด์ง ์ปฌ๋ ์ ํ์
- ๊ฐ์ ์ค๋ณต์ด ๊ฐ๋ฅํ๋ ํค๋ ์ค๋ณต ๋ถ๊ฐ!
- Dictionary๋ ์ฌ๋ฌ ๋ฆฌํฐ๋ด ๋ฌธ๋ฒ์ ํ์ฉํ ์ ์์ด์ ํํ ๋ฐฉ๋ฒ์ด ๋ค์ํ๋ค.
๐ก ๋์ ๋๋ฆฌ ์์ฑ ๋ฐ ์ด๊ธฐํ
// var anyDictionary: Dictionary<ํคํ์
, ๊ฐํ์
> = [ํคํ์
: ๊ฐํ์]()
// Key๊ฐ String ํ์
์ด๊ณ Value๊ฐ Any์ธ ๋น Dictionary ์์ฑ
var anyDictionary: Dictionary<String, Any> = [String: Any]()
// ๊ฐ์ ํํ
var anyDictionary: Dictionary <String, Any> = Dictionary<String, Any>()
var anyDictionary: Dictionary <String, Any> = [:]
var anyDictionary: [String: Any] = Dictionary<String, Any>()
var anyDictionary: [String: Any] = [String: Any]()
var anyDictionary: [String: Any] = [:]
var anyDictionary = [String: Any]()
๐ก ๋์ ๋๋ฆฌ ๊ฐ ํ ๋น, ์ ๊ทผํ๊ธฐ
- ๋์ ๋๋ฆฌ์ ๊ฒฝ์ฐ, Subscript([])๋ก ์์์ ์ ๊ทผํ๋ฉด ๊ธฐ๋ณธ ๋ฐํ๊ฐ์ด Optional ํ์ !
- ํค๊ฐ์ด ์๋ ๊ฒฝ์ฐ ์๋ฌ ์๋๊ณ nil ๋ฐํ!
// ํค์ ํด๋นํ๋ ๊ฐ ํ ๋น
anyDictionary = ["key1": 1000]
anyDictionary["key2"] = "value"
anyDictionary["key3"] = 100
print(anyDictionary)
// ํค์ ํด๋นํ๋ ๊ฐ ๋ณ๊ฒฝ
anyDictionary["someKey"] = "dictionary"
print(anyDictionary)
// ๋ด๋ถ ๊ฐ ์ ๊ทผ
print(anyDictionary["key1"]) //Optional(1000)
// ๋ด๋ถ์ ์๋ ํค๋ก ์ ๊ทผํ์ ๊ฒฝ์ฐ > ์ค๋ฅ๋ฐ์ ์์ด nil ๋ฐํ
print(anyDictionary["key4"]) //nil
// ํค์ ํด๋นํ๋ ๊ฐ์ด ์๋ ๊ฒฝ์ฐ default ๊ฐ์ ๋ฐํํ๋๋ก
print(anyDictionary["key4", default : 0]) //0
๐ก ๋์ ๋๋ฆฌ ๊ฐ ์์ ํ๊ธฐ
- updateValue(_:forKey:) ๋ฉ์๋ ์ฌ์ฉ
- ํด๋น ํค๊ฐ ์์์๋ ์๊ธฐ ๋๋ฌธ์, ์ต์ ๋์ ๋ฆฌํดํ๋ค.
- ๋ฐ๋ผ์, ํด๋น ํค์ ์ด์ ๊ฐ์ ์์ธ์คํ ๋๋ ์ต์ ๋ ๋ฐ์ธ๋ฉ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
var anyDictionary = ["key1": 1000]
let oldValue = anyDictionary.updateValue(2000, forKey: "key1")
if let lastValue = oldValue, let currentValue = anyDictionary["key1"]{
print("lastValue : \(lastValue), currentValue : \(currentValue)")
}
// lastValue : 1000, currentValue : 2000
๐ก ๋์ ๋๋ฆฌ ๊ฐ ์ญ์ ํ๊ธฐ
- removeValue(forKey:) ๋ฉ์๋ ์ฌ์ฉ
- ์ ์ฒด ์ญ์ ํ๋ ค๋ฉด, removeAll() ์ฌ์ฉ
- nil ๊ฐ์ ์ค์ ํ์ฌ ์ ๊ฑฐ ๊ฐ๋ฅ!
// removeValue : ํค์ ํด๋นํ๋ ๊ฐ ์ ๊ฑฐ
anyDictionary.removeValue(forKey: "key1")
// nil ์ ์ค์ ํ์ฌ ์ ๊ฑฐ
anyDictionary["key2"] = nil
// removeAll() : ์ ์ฒด ์ญ์ ํ๊ธฐ
anyDictionary.removeAll()
๐ก Any ํ์ ์ผ๋ก ์์ฑ ๊ฐ๋ฅ
// ์ฌ๋ฌ ํ์
์ ์ ์ฅํ๋ ๋์
๋๋ฆฌ ์์ฑํ๊ธฐ
var dictAny1: [String: Any] = ["name": "Sodeul", "age": 100]
var dictAny2: NSDictionary = ["name": "Sodeul", "age": 100]
๐ก ๋์ ๋๋ฆฌ ๊ด๋ จ ๋ฉ์๋
- .isEmpty : ๋์ ๋๋ฆฌ๊ฐ ๋น์๋์ง ํ์ธ(true or false)
//isEmpty : ๋์
๋๋ฆฌ๊ฐ ๋น์๋์ง ํ์ธ
print(anyDictionary.isEmpty)
๐ก ๋์ ๋๋ฆฌ์ ๋ฃจํ ์ ์ฉํ๊ธฐ
- Swift๋ ๋์ ๋๋ฆฌ์ ํค-๊ฐ ์์ ๋ฐ๋ณต ์ฒ๋ฆฌํ ์ ์๋ค.
- ๋ฌผ๋ก , ํค์ ํด๋นํ๋ ๊ฐ๋ง ๋ฐ๋ณต ์ฒ๋ฆฌ ๊ฐ๋ฅ
let dict: [String : String] = ["A" : "Apple", "B" : "Banana", "C" : "Cherry"]
for (key, value) in dict {
print("key : \(key), value : \(value)")
}
for key in dict.keys {
print(key) // C B A
}
- ๋์ ๋๋ฆฌ๋ ์์๊ฐ ์๊ธฐ ๋๋ฌธ์ key๋ value ๊ฐ๋ค์ for๋ฌธ์ผ๋ก ์ถ๋ ฅํ๋ฉด ์ถ๋ ฅ๋๋ ์์๊ฐ ๊ณ์ ๋ฐ๋๋ค;;
- ํน์ ์์๋ก ๊ฐ์ ๋ฐ๋ณตํ๋ ค๋ฉด sort() ๋ฉ์๋ ์ฌ์ฉ
let dict: [String : String] = ["A" : "Apple", "B" : "Banana", "C" : "Cherry"]
//swift dictionary ๋ ์ ์๋ ์์๊ฐ ์์!!
//ํน์ ์์๋ก ๊ฐ์ ๋ฐ๋ณตํ๋ ค๋ฉด sort() ๋ฉ์๋ ์ฌ์ฉ ํ์
for key in dict.keys {
print(key)
}
// BCA ์๋ค๊ฐ ABC ์๋ค๊ฐ... ์ถ๋ ฅ๊ฐ์ด ๊ณ์ ๋ฐ๋
//sort ๋ฉ์๋ ์ฌ์ฉํ์ฌ ์ค๋ฆ์ฐจ์ ์ถ๋ ฅ
for value in dict.keys.sorted() {
print(value) // A B C
}
๐ก ๋์ ๋๋ฆฌ to Array
- ์๋ ์ฝ๋๋ก ๋์ ๋๋ฆฌ์ ํค๊ฐ์ ์ฌ์ฉํ์ฌ Array ํ์ ์ ์ธ์คํด์ค ์์ฑ์ด ๊ฐ๋ฅํ๋ค!
var dictArray = Array(dict.keys)
print(dictArray)//["A", "B", "C"]
๐ Set
- Set๋ ์์๊ฐ ์๊ณ , ๋ฉค๋ฒ๊ฐ ์ ์ผํ ๊ฒ์ ๋ณด์ฅํ๋ ์ปฌ๋ ์ ํ์ ์ ๋๋ค. >> ์์๊ฐ ์์ผ๋ฏ๋ก ์ค๋ณต ๋ถ๊ฐ!
- ํด์๋ฅผ ํตํด ๊ฐ์ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ๋ฐฐ์ด์ ๋นํด ๊ฒ์์๋๊ฐ ๋น ๋ฅด๊ณ , ์ ์ฅ๋๋ ์๋ฃํ์ Hashable ํ๋กํ ์ฝ์ ์ค์ํด์ผ ํจ.
- Hashable ํ๋กํ ์ฝ์ ์ฑํํ ์๋ฃํ๋ง ์ ์ฅ ๊ฐ๋ฅํ๋ฏ๋ก Anyํ์ ์ผ๋ก ์์ฑ ๋ถ๊ฐ! > NSSet ํ์ ์ผ๋ก ์ฌ๋ฌ ํ์ ์ ์ฅ ๊ฐ๋ฅ
- ์งํฉ ์ฐ์ฐ์ ์ ์ฉ
๐ก Set ์์ฑ ๋ฐ ์ด๊ธฐํ
var integerSet: Set<Int> = Set<Int>()
// 1. ํ์
Annotation์ผ๋ก ์์ฑํ๊ธฐ
var set1: Set<Int> = []
// 2. ์์ฑ์๋ก ์์ฑํ๊ธฐ
var set2 = Set<Int>()
//<์ฃผ์> ํ์
์ถ๋ก ์ผ๋ก ์์ฑ์์๋ ๋ฐฐ์ด๋ก ์ธ์!!
var set = [1, 5, 3, 2, 1] // ๋ฐฐ์ด๋ก ์ธ์๋จ
๐ก NSSetํ์ ์ผ๋ก ์์ฑํ์ฌ ์ฌ๋ฌ ํ์ ์ ์ฅํ๊ธฐ
var set: NSSet = [1, "s", 1.2] //{"s", 1, 1.2}
๐ก Set ๋ฉ์๋
- .isEmpty : set์ด ๋น์๋์ง ํ์ธ(true or false)
- .count
- contains(_:) : ํน์ ํญ๋ชฉ์ด ์ธ์คํด์ค์ ์๋์ง ํ์ธํ๋ ๋ฉ์๋
- insert(_:) ๋ก ์งํฉ์ ์์ ์ฝ์ ํ๋ ๋ฉ์๋
- update
- remove
- removeAll
var set1: Set<Int> = [1, 2, 5, 0]
let count: Int = set1.count // Set ๊ฐฏ์ ํ์ธ : 4
let isEmpty: Bool = set1.isEmpty
set1.contains(1) // true
set1.contains(10) // false
// insert : ๊ฐ์ ์ถ๊ฐํ๊ณ , ์ถ๊ฐ๋ ๊ฒฐ๊ณผ๋ฅผ ํํ๋ก ๋ฆฌํด (์ค๋ณต์ด๋ฉด false, ์ถ๊ฐ๋ ๊ฐ)
set1.insert(1) // (false, 1)
set1.insert(10) // (true, 10)
// update : ๊ฐ์ด ์กด์ฌํ์ง ์์ผ๋ฉด ์ถ๊ฐ ํ nil ๋ฆฌํด, ์กด์ฌํ ๊ฒฝ์ฐ ๋ฎ์ด์ฐ๊ธฐ ํ ๋ฎ์ด์ฐ๊ธฐ ์ ๊ฐ ๋ฆฌํด
set1.update(with: 1) // Optioanl(1)
set1.update(with: 120) // nil
// ์ญ์
integerSet.remove(100)
integerSet.removeFirst()
๐ก Set ์งํฉ ์ฐ์ฐ
- Union(_:) : ๋ ์งํฉ์ ํฉ์น๋ ๋ฉ์๋(ํฉ์งํฉ)
- intersection(_:) : ๋ ์งํฉ์ ๊ณตํต์ผ๋ก ์กด์ฌํ๋ ์์๋ฅผ ๊ณจ๋ผ๋ด๋ ๋ฉ์๋(๊ต์งํฉ)
- insDisjoint(with:) : ๋ ์งํฉ์ ๊ณตํต ์์๊ฐ ์๋์ง ํ์ธํ๋ ๋ฉ์๋(์๋ก์)
// Set๋ ์งํฉ ์ฐ์ฐ์ ์ ์ฉ
let setA: Set<Int> = [3, 4, 5]
let setB: Set<Int> = [3, 4, 5, 6, 7]
// ๋ถ๋ถ์งํฉ
setA.isSubset(of: setB) // true
setB.isSubset(of: setA) // false
// ํฉ์งํฉ
let union: Set<Int> = setA.union(setB)
// ํฉ์งํฉ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
let sortedUnion: [Int] = union.sorted()
// ๊ต์งํฉ
let intersection: Set<Int> = setA.intersection(setB)
// ์ฐจ์งํฉ
let subtracting: Set<Int> = setA.subtracting(setB)
//์๋ก์
let yourFirstBag = Set(["Apple", "Wo"])
let yourSecondBag = Set(["Berry", "Yo"])
let disjoint = yourFirstBag.isDisjoint(with: yourSecondBag) //true
๐ก Set ํ์ ์ถ๋ก
var integerSet: Set<Int> = Set<Int>()
// ํ์
์ถ๋ก >> (type(of: ))
print(type(of: integerSet)) //Set<Int>
// array์ ๊ฐ์ ๋๊ดํธ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ํ์
์ถ๋ก ์ ํ๊ฒ ๋๋ฉด ์ปดํ์ผ๋ฌ๋ array๋ก ํ์
์ ์ง์ ํ๋ค.
var set = [1,2,3]
print(type(of: set))
'๐ iOS > Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[iOS]์ต์ ๋ฒ ํจํด (1) | 2024.11.12 |
---|---|
[Swift] ๊ณ ์ฐจํจ์ - map, filter, reduce (0) | 2023.04.10 |
[Swift] ์ต์ ๋(Optional) ? ์ต์ ๋ ๋ฐ์ธ๋ฉํ๊ธฐ + String ๋น๊ฐ, ์ต์ ๋ ๊ตฌ๋ถ (0) | 2023.04.05 |
[Swift] ํจ์(Function) - ๊ณ ๊ธ (0) | 2022.03.12 |
[Swift] ํจ์(Function) - ๊ธฐ๋ณธ (0) | 2022.03.05 |