๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Swift

[Swift] Array ๋ฐฐ์—ด

by yangsubinn 2022. 6. 11.

Array 

์ˆœ์„œ๋ฅผ ๊ฐ€์ง„ ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ์˜ ์ปฌ๋ ‰์…˜ ํƒ€์ž…

 

๋ฐฐ์—ด ์ƒ์„ฑ

๊ฐ’์„ ๋ฐ”๋กœ ๋„ฃ์–ด์ฃผ๋Š” ๋ฐฐ์—ด์˜ ๊ฒฝ์šฐ, ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

swift๋Š” ํƒ€์ž… ์ถ”๋ก ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒ์„ฑ์‹œ ํŠน์ • ํƒ€์ž…์„ ์ง€์ •ํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค.

// ํƒ€์ž… ์ง€์ •O
let number: [Int] = [1,3,5,2,6,8]
let name: [String] = ["ํ”ผ์นด์ธ„", "๋ผ์ด์ธ„", "ํŒŒ์ด๋ฆฌ", "๊ผฌ๋ถ€๊ธฐ"]

// ํƒ€์ž… ์ง€์ •X
let number = [1,3,5,2,6,8]
let name = ["ํ”ผ์นด์ธ„", "๋ผ์ด์ธ„", "ํŒŒ์ด๋ฆฌ", "๊ผฌ๋ถ€๊ธฐ"]

 

ํ•˜์ง€๋งŒ ํƒ€์ž…์„ ๊ผญ ๋ช…์‹œํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šด๋‹ˆ๋‹ค

  1. ๋นˆ ๋ฐฐ์—ด ์ƒ์„ฑ
  2. ์—ฌ๋Ÿฌ ํƒ€์ž… ๊ฐ’์˜ ๋ฐฐ์—ด ์ƒ์„ฑ
// 1. ๋นˆ ๋ฐฐ์—ด ์ƒ์„ฑ ๋ฐฉ๋ฒ• (์•„๋ž˜ ์„ธ ๋ฐฐ์—ด์€ ๋ชจ๋‘ ๊ฐ™์€ ํ˜•ํƒœ์˜ ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค.)
var color1: [String] = []
var color2 = Array<String>()
var color3 = [String]()

// 2. ์—ฌ๋Ÿฌ ํƒ€์ž… ๊ฐ’์˜ ๋ฐฐ์—ด
let anyArray: [Any] = [1, 4, "ํ”ผ์นด์ธ„", "๋ผ์ด์ธ„", 8]

 

ํฌ๊ธฐ๊ฐ€ ์ •ํ•ด์ง„ ๋ฐฐ์—ด์„ ๋งŒ๋“ค๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ ์•„๋ž˜์™€ ๊ฐ™์ด ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

// ["์‚ฌ๊ณผ", "์‚ฌ๊ณผ", "์‚ฌ๊ณผ", "์‚ฌ๊ณผ"] ํ˜•ํƒœ์˜ ๋ฐฐ์—ด์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•
let appleArray = [String](repeating: "์‚ฌ๊ณผ", count: 4)
let appleArrayToo = Array(repeating: "์‚ฌ๊ณผ", count: 4)

 

๋นˆ ๋ฐฐ์—ด๋กœ ์ด๋ฃจ์–ด์ง„, ํฌ๊ธฐ๊ฐ€ ์ •ํ•ด์ง„ ๋ฐฐ์—ด๋„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

struct Record {
    let date, day: String
}

var contentList = Array(repeating: [Record](), count: 8)

print(contentList)
print(type(of: contentList))
print(type(of: contentList[0]))

// [[], [], [], [], [], [], [], []]
// Array<Array<Record>>
// Array<Record>

 

๋ฐฐ์—ด ์ ‘๊ทผ

๋ฐฐ์—ด์€ ์ˆœ์„œ๋ฅผ ๊ฐ–๋Š” ๋ฆฌ์ŠคํŠธ์ด๊ธฐ ๋•Œ๋ฌธ์— index๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ

count์™€ isEmpty๋ฅผ ํ†ตํ•ด ๋ฐฐ์—ด ์š”์†Œ์˜ ๊ฐœ์ˆ˜์™€ ๋นˆ ๋ฐฐ์—ด ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

let nums = [1, 100]
print(nums[0]) // 1
print(nums[1]) // 100
print(nums[1]) // Fatal error: Index out of range

print(nums.count) // 2
print(nums.isEmpty) // False

 

๋‹ค์–‘ํ•œ ์ธ๋ฑ์Šค ์ ‘๊ทผ๋ฒ•

let name = ["ํ”ผ์นด์ธ„", "๋ผ์ด์ธ„", "ํŒŒ์ด๋ฆฌ", "๊ผฌ๋ถ€๊ธฐ", "ํŒฝ๋„๋ฆฌ"]

// ๋ฐฐ์—ด ๋‚ด ํŠน์ • ๋ฒ”์œ„์˜ ์š”์†Œ
print(name[0...1]) // ["ํ”ผ์นด์ธ„", "๋ผ์ด์ธ„"]

// ๋ฐฐ์—ด์˜ ์ฒซ ์ธ๋ฑ์Šค์— ํ•ด๋‹นํ•˜๋Š” ์š”์†Œ
print(name.startIndex) // 0
print(name[name.startIndex]) // ํ”ผ์นด์ธ„
print(name.first)

// ๋ฐฐ์—ด์˜ ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค์— ํ•ด๋‹นํ•˜๋Š” ์š”์†Œ
print(name.endIndex) // 5
print(name[name.endIndex]) // Fatal error: Index out of range
print(name[name.index(before: name.endIndex)]) // ํŒฝ๋„๋ฆฌ

// ๋ฐฐ์—ด์˜ ๋งจ ์•ž, ๋’ค ์š”์†Œ ํ•˜์ง€๋งŒ optional
print(name.first) // Optional("ํ”ผ์นด์ธ„")
print(name.last) // Optional("ํŒฝ๋„๋ฆฌ")

 

๋ฐฐ์—ด ์ˆ˜์ • ๋ฐ ์‚ฝ์ž…

๋ฐฐ์—ด์ด var๋กœ ์„ ์–ธ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ, index๋กœ ์ ‘๊ทผํ•ด์„œ ๊ฐ’์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

var name = ["ํ”ผ์นด์ธ„", "๋ผ์ด์ธ„", "ํŒŒ์ด๋ฆฌ", "๊ผฌ๋ถ€๊ธฐ", "ํŒฝ๋„๋ฆฌ"]
print(name) // ["ํ”ผ์นด์ธ„", "๋ผ์ด์ธ„", "ํŒŒ์ด๋ฆฌ", "๊ผฌ๋ถ€๊ธฐ", "ํŒฝ๋„๋ฆฌ"]

name[0] = "์ˆ˜๋น™์ˆ˜"
print(name) // ["์ˆ˜๋น™์ˆ˜", "๋ผ์ด์ธ„", "ํŒŒ์ด๋ฆฌ", "๊ผฌ๋ถ€๊ธฐ", "ํŒฝ๋„๋ฆฌ"]

 

๋นˆ ๋ฐฐ์—ด์ด๋‚˜ ๊ธฐ์กด์˜ ๋ฐฐ์—ด์— ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ append๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

// ๊ธฐ์กด ๋ฐฐ์—ด
var name = ["ํ”ผ์นด์ธ„", "๋ผ์ด์ธ„", "ํŒŒ์ด๋ฆฌ", "๊ผฌ๋ถ€๊ธฐ", "ํŒฝ๋„๋ฆฌ"]

name.append("๋น™์ˆ˜")
print(name) // ["ํ”ผ์นด์ธ„", "๋ผ์ด์ธ„", "ํŒŒ์ด๋ฆฌ", "๊ผฌ๋ถ€๊ธฐ", "ํŒฝ๋„๋ฆฌ", "๋น™์ˆ˜"]

// ๋นˆ ๋ฐฐ์—ด
var numbers: [Int] = []
print(numbers) // []

numbers.append(1024)
print(numbers) // [1024]

numbers.append(0)
print(numbers) // [1024, 0]

 

'Swift' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Swift] MEMORY LEAK ์žก๊ธฐ  (2) 2023.02.17
[RxSwift] ์—๋Ÿฌ ํ•ธ๋“ค๋ง  (2) 2023.02.09
[Swift] RxSwift์—์„œ Combine์œผ๋กœ ๋ฐ”๊ฟ”๋ณด๊ธฐ  (2) 2022.09.26