<2์ฃผ์ฐจ ๊ฐ์ TIL>
์ค๋์ Swift ์ธ์ด์ ๊ธฐ๋ณธ ๋ฌธ๋ฒ๊ณผ ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ๋ก์ง์ ์ฐ๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ ๋ค.
Swift ๋ฌธ๋ฒ์ [๋ด๋ฐฐ์บ ] iOS ๊ฐ๋ฐ ์ข
ํฉ๋ฐ์ ๋ค์ด์ค๊ธฐ ์ ์ ์ด๋ฏธ ํ ๋ฒ ๊ณต๋ถํ๋ ๋ถ๋ถ์ด์์ง๋ง,
ํ ๋ฒ ๋ ๋ณต์ตํ๋ค๋ ์๊ฐ์ผ๋ก ์ง์คํด์ ์์
์ ๋ค์๋ค.โบ๏ธ
์ธํฐํ์ด์ค์ ๋ก์ง ์ฐ๊ฒฐํ๋ ๋ถ๋ถ ๋ํ ์ด์ ์ ํด๋ณธ ๊ฒฝํ์ด ์์ง๋ง,
์์ง ์์ ํ ์ดํดํ๊ณ ์๋ ๋ถ๋ถ์ ์๋๋ผ์
๊ฐ์๋ฅผ ๋ฉ์ถฐ๊ฐ๋ฉด์, ์ง์ ํด๋ณด๊ณ ๋๊ณผ ์์ ์ต์ ์ ์๊ฒ ๊ณ์ ๋๋ฌ๋ดค๋ค!
Swift ๊ธฐ๋ณธ ๋ฌธ๋ฒ
โถ๏ธ var & let (๋ณ์์ ์์)
var๋ '๋ณ์', let์ '์์'์ด๋ค.
์ด ๋ ๊ฐ์ง๋ ๋ฐ์ดํฐ๋ฅผ ๋ด์๋๋ ๊ณต๊ฐ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
var(๋ณ์)๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์ดํ์ ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํ๋ค.
๋ฐ๋ฉด์, let(์์)๋ ํ ๋ฒ ๊ฐ์ด ์ ์ฅ๋๋ฉด ์ดํ์ ๋ณ๊ฒฝ์ด ๋ถ๊ฐ๋ฅํ๋ค.
var panda = "I love Fubao"
let panda = "I love Aibao"
<ํด์>
var๋ผ๋ ๋ณ์์ "I love Fubao"๋ฅผ ๋ด์๋ค.
let์ด๋ผ๋ ์์์ "I love Aibao"๋ฅผ ๋ด์๋ค.
("=" → "๋์
ํ๋ค"๋ผ๋ ์๋ฏธ)
โถ๏ธ ๋ฐ์ดํฐ ํ์
(Data Type)
Swift์๋ ๋ฐ์ดํฐ type์ด ์กด์ฌํ๋ค.
์ฌ๋ฌ๊ฐ์ง๊ฐ ์์ง๋ง, ๋ํ์ ์ผ๋ก String(๋ฌธ์์ด), Int(์ ์), Float(์ค์), Bool(์ฐธ/๊ฑฐ์ง)์ด ์๋ค.
"ํธ๋ฐ์ค" → String(๋ฌธ์์ด)
27 → Int(์ ์)
3.5 → Float(์ค์, ๋ถ๋์์์ )
true,false → Bool(์ฐธ/๊ฑฐ์ง)
let nickname: String = "Yebao"
"nickname์ด๋ผ๋ ์ ์ฅ ๊ณต๊ฐ์ String์ด๋ผ๋ type๋ง ๋ด์๊ฑฐ์ผ" ์ด๋ฐ ์๋ฏธ์ด๋ค! :-)
โถ๏ธ ์ปฌ๋ ์
(Collection)
๊ฐ์ type์ ์ฌ๋ฌ ๊ฐ์ ๋ณ์๋ฅผ ํ๋๋ก ๋ฌถ์ ๊ฒ์ด๋ค.
ํฌ๊ฒ Array, Dictionary, Set์ด ์๋ค.
โ Array
๋ง ๊ทธ๋๋ก ๋ฐฐ์ด์ด๋ค. ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ํ๋์ ๋ณ์ ์์ ๋ฃ์ ๊ฒ์ด๋ค.
var baoFamily: [String] = ["Fubao", "Aibao", "Lebao", "Huibao", "Ruibao"]
let firstBao = baoFamily[0]
baoFamily๋ผ๋ ๋ณ์ ์์ 5๊ฐ์ String ํ์
๋ค์ ๋ฃ์๋ค.
Index๋ 0๋ถํฐ ์์ํ๋ฏ๋ก, 1๋ฒ์งธ์ธ "Fubao"๋ baoFamily[0]์ ํด๋นํ๋ค.
โก Dictionary
๋์
๋๋ฆฌ๋ key๋ก value์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ด๋ค.
var pandaLand: [String: String] = ["Address": "์ฉ์ธ์", "Name": "Fubao", "Age": "Three"]
let pandaName = pandaLand["Name"]
pandaLand๋ผ๋ ๋ณ์์ [๋ฌธ์์ด:๋ฌธ์์ด] ํํ๋ก ๋ฃ์๋ค.
"Address", "Name", "Age"๋ "์ฉ์ธ์", "Fubao", "Three"์ key์ด๊ณ ,
"์ฉ์ธ์", "Fubao", "Three"๋ ๊ฐ๊ฐ์ value์ด๋ค.
๊ทธ๋์ pandaName์ด๋ผ๋ ์์๋ pandaLand์ ์๋ "Name"์ด๋ผ๋ key์ value์ด๋ผ๋ ๋ป์ด๋ค.
pandaName์ "Fubao"๊ฐ ๋๋ค.
โข Set
์์๊ฐ ์๋ ๊ณ ์ ํ ๊ฐ๋ค์ ์งํฉ์ด๋ค.
var Baos: Set<String> = ["Fubao", "Aibao", "Lebao", "Huibao", "Ruibao"]
let isContainsFubao = Baos.contains("Fubao")
์ด๋ ๊ฒ ์์ ์์ด ๋์ด๋์ด ์๋ค.
Set์ ๊ฒฝ์ฐ์๋ ์ค๋ณต์ด ๋ฐ์ํ๋ค๋ฉด ์ ๊ฑฐ๋๋ค.
์์ ๊ฐ์ ๊ฒฝ์ฐ์๋ ๊ฒฐ๊ณผ๊ฐ "Fubao"๊ฐ ํฌํจ๋์ด ์๊ธฐ ๋๋ฌธ์ true๋ก ๋์ฌ ๊ฒ์ด๋ค.
โถ๏ธ ์กฐ๊ฑด๋ฌธ / ์ ์ด๋ฌธ
์กฐ๊ฑด์ ๋ฐ๋ผ ๋ค๋ฅธ ์ํ๋ฅผ ๋ง๋๋ ๋ฌธ๋ฒ์ด๋ค.
โ if - else
let conditionA = 10
let conditionB = 20
if conditionA + conditionB == 30 {
print("๋ ๊ฐ์ ํฉ์ด 30์ด์ผ!")
} else {
print("๋ ๊ฐ์ ํฉ์ด 30์ด ์๋์ผ!")
}
// ๊ฒฐ๊ณผ : ๋ ๊ฐ์ ํฉ์ด 30์ด์ผ!
if ๋ true์ผ ๋ ์คํ๋๊ณ , else๋ false์ผ ๋ ์คํ๋๋ค.
โข switch - case
switch๋ฌธ์ ๋์ ์ ์์ ์๋ ์ฌ๋ฌ ๊ฐ์ ์ผ์ด์ค๋ฅผ ๋ถ๊ธฐ ์ฒ๋ฆฌํ ๋ ์ฌ์ฉํ๋ค.
์ฝ๋๋ธ๋ก ์์์ ์ฌ๋ฌ ์ผ์ด์ค๋ค์ ์ฒดํฌํ๊ณ , ํด๋น ์ผ์ด์ค์ ๋ถํฉํ๋ฉด ์ฝ๋๋ฅผ ์ํํ๋ค.
let num = 27
switch num {
case 0:
print("0์ ๋๋ค.")
case 0...20:
print("0์์ 20 ์ฌ์ด์ ์ ์ ๋๋ค.")
case 20...30:
print("20์์ 30 ์ฌ์ด์ ์ ์ ๋๋ค.")
default:
print("30 ์ด์์ ์ ์ ๋๋ค.")
}
// ๊ฒฐ๊ณผ: 20์์ 30 ์ฌ์ด์ ์ ์ ๋๋ค.
์์ ๊ฐ์ด ๋ค์ด์ค๋ ๋ณ์์ ๋ํด์ ์๊ฐํด๋ณผ ์ ์๋ ๋ชจ๋ ์ผ์ด์ค์ ๋ํด์ ๋ค๋ค์ฃผ์ด์ผ ํ๋ค.
๊ทธ๋ฆฌ๊ณ ์ผ์ด์ค๊ฐ ๋๋ฌด ๋ง์์ ๋ค ์ ์ง ๋ชปํ๋ ๊ฒฝ์ฐ์๋
์ด๋ ๊ฒ default ์ผ์ด์ค๋ฅผ ์ฌ์ฉํด์ ๋๋จธ์ง ์ผ์ด์ค์ ๋ํด์ ์ํํ ์ ์๋๋ก ์ฝ๋๋ฅผ ๋จ๊ฒจ์ฃผ๋ฉด ๋๋ค.
switch๋ฌธ์ ํญ์ ์ฃผ์ด์ง ๋ชจ๋ ์ผ์ด์ค์ ๋ํด ์ ์ํด์ผํ๋ฏ๋ก
default๋ฅผ ํตํด ์์ง ์ ์๋์ง ์๊ฑฐ๋ ์ ์ํ ํ์๊ฐ ์๋ ์๋ 1,2๋ฒ ์ผ์ด์ค๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค. (↓โป ์ฐธ๊ณ โป↓)
โป ์ฐธ๊ณ โป
<์ ์ํฉ ์ด์ธ์๋ default ๋ฌธ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ>
1. ์ผ์ด์ค๋ฅผ ํน์ ํ ์ ์๋ ๊ฒฝ์ฐ (์ ์๋ ์ผ์ด์ค ์ด์ธ์ ์์ธ๋ค)
2. ์์ง ์ ์๋ ํ์๊ฐ ์๋ ์ผ์ด์ค๊ฐ ์๋ ๊ฒฝ์ฐ
โข for - in (๋ฐ๋ณต๋ฌธ)
For๋ฌธ์ ๊ฐ์ ์ฝ๋๋ฅผ ์ฌ๋ฌ๋ฒ ๋ฐ๋ณตํด์ฃผ๋ ๋ฐฉ๋ฒ์ด๋ค.
์ฝ๋๋ฅผ ๊ฐ๋จํ๊ฒ ๋ง๋ค์ด์ฃผ๋ ๋ฐฉ๋ฒ์ด๊ธฐ๋ ํ๋ค.
for baos in ["Fubao", "Aibao", "Lebao", "Huibao", "Ruibao"] {
// ๊ฐ๊ฐ์ baos์ ๋ํด ์คํ๋๋ค.
}
for nums in 1...5 {
// 1์์ 5๊น์ง ์คํ๋๋ค.
}
์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ๋ก์ง ์ฐ๊ฒฐ
์ค๋ ๋ฐฐ์ด ๋ด์ฉ์ IBAction๊ณผ IBOutlet์ด๋ค.
๋ ๊ฐ์ง ๋ชจ๋ UI๋ฅผ ๊ทธ๋ฆฌ๋ ๋ฐฉ๋ฒ์ด๋ค! ์์ ๊ณต๋ถํ๋ ์์ดํฐ ๋ชจํ์ ๊พธ๋ฏธ๋ ๊ฒ์ด๋ค.
Storyboard๋ก ์ง์ ๊พธ๋ฏธ๊ธฐ, Code๋ก ์ง์ ์์ฑํด์ ๊พธ๋ฏธ๊ธฐ → ๋ ๊ฐ์ง ๋ชจ๋ ๊ฐ๋ฅํ๋ค!
๋ ๋ฐฉ๋ฒ์ ํจ๊ป ์ฌ์ฉํ ์๋ ์๋ค.
IBAction๊ณผ IBOutlet ์ฐ๊ฒฐ ๋ฐฉ๋ฒ์ 'drag & drop' ์์ฃผ ๊ฐ๋จํ๋ค.
์ฐ์ , optionํค๋ฅผ ๋๋ฅธ ์ํ๋ก ViewController์ main.storyboard ๋ ํ๋ฉด์ ํจ๊ป ๋์ด๋ค.
storyboard์ Button์ ์์ฑํ๋ค๋ฉด,
Button์ ์ปค์๋ฅผ ๋๊ณ controlํค๋ฅผ ๋๋ฅธ ์ํ๋ก ์ฝ๋์ drag & drop ์ ํ๋ฉด ๋๋ค.
<์ด๋ฒ ๊ฐ์ ๋ชฉํ>
1. ๋ฒํผ์ ๋๋ ์ ๋ ๋์ํ๊ฒ ํ๊ธฐ
2. ๋ฒํผ์ ๋๋ฅด๋ฉด ํ๋ฉด์ ์
๋ฐ์ดํธ ๋๋ก๋ก ํ๊ธฐ
3. ์ฝ๋ฉ์ ์ต์ํ์ผ๋ก ๊ตฌํํ๊ธฐ
IBOutlet์
์คํ ๋ฆฌ๋ณด๋์ Button์ ๋ง๋ค๊ณ
control๋ก ์์ ๊ฐ์ ์์น์ drag & drop ํ๋ฉด
ํ๋ฉด ์ผ์ชฝ์ ๋ณด์ด๋ ์ฐฝ์ด ๋ฌ๋ค.
์์ ๋กญ๊ฒ Name์ ์
๋ ฅํ๊ณ connect๋ฅผ ๋๋ฅด๋ฉด ๋.
Label๋ ์ถ๊ฐ๋ก ๋ง๋ค์ด์ ๋ฐ๋ก ์๋์ ์ฐ๊ฒฐํ๋ค.
์ ํ๋ฉด์ Button๊ณผ Label๋ฅผ ์์ ์ค๋ช
ํ ๋๋ก
viewcontroller์ ์ด ๋ ๊ฐ์ง๋ฅผ ์ฐ๊ฒฐํด ๋์ ๊ฒ์ด๋ค!
(์ผ์ชฝ์ ์ซ์ ๋ถ๋ถ์ ๋๊ทธ๋ผ๋ฏธ์ ์ปค์๋ฅผ ๊ฐ์ ธ๋ค ๋์ผ๋ฉด, ์ ์ฐ๊ฒฐ๋๋์ง ํ์ธํ ์ ์๋ค.)
์ด์ Button์ ๋๋ ์ ๋, ์ก์
์ด ๋์ํ ์ ์๋๋ก ์ฐ๊ฒฐํ๋ ค๊ณ ํ๋ค.
IBAction์ ๊ฒฝ์ฐ ์ฝ๋ ์๋ ์ชฝ์ ๋ณดํต ๋ฃ๋๋ค.
์์ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก Button์ drag & drop!
์ด๋ฒ์๋ Outlet์ด ์๋๋ผ Action!
Name ์์ฑ!
๊ทธ๋ฆฌ๊ณ Event๋ฅผ ๋๋ฅด๋ฉด,
์ด๋ ๊ฒ ํด๋ฆญ ๋ฐฉ์์ ๋ฐ๋ฅธ event ๋ฐ์์ ์ ํ ์ ์๋ค.
์ฐ์ , ์ปค์๋ฅผ ์์ชฝ์ ๋๊ณ ํด๋ฆญ์ ํ๋ค๊ฐ ๋์ ๋, ๋ฐ์ํ๋ 'Touch Up Inside'๋ก ์ค์ ํ๊ณ
connect ํด๋ณด๊ฒ ๋ค!
๊ทธ๋ฆฌ๊ณ ๋๋ ์ ๋, ๋ฌธ๊ตฌ๊ฐ ์ถ๋ ฅ๋ ์ ์๋๋ก
print("์๋
ํ์ธ์!!") ๋ฅผ ์ถ๊ฐํ๋ค.
์ด๋ ๊ฒ ๋น๋ํ๊ณ ์คํํด์ ๋ฒํผ์ ํด๋ฆญํด๋ณด๋ฉด??
์๋์ ๊ฐ์ด ์ ์์ ์ผ๋ก "์๋
ํ์ธ์!!"๊ฐ ์ถ๋ ฅ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
์ด์ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ๋ฒํผ์ ๋๋ ์ ๋, ํ๋ฉด ์์์ด ๋ฐ๋ ์ ์๊ฒ ํด๋ณด๋ ค๊ณ ํ๋ค.
(view.backgroundColor = .์ํ๋ ์์)
์ด๋ ๊ฒ ๋น๋ํ๊ณ ์คํํด์, ๋ฒํผ์ ๋๋ฅด๋ฉด?
์๋ white ์์์ด์๋ ํ๋ฉด์ด blue ์์์ผ๋ก ๋ฐ๋์๋ค!
์ด๋ฒ์๋ ์กฐ๊ธ ๋ ๋์๊ฐ์
๋ฒํผ์ ํด๋ฆญํ๋ฉด, ์์ Label์ ์ค์ ํ ๊ธ์๊ฐ ์
๋ฐ์ดํธ ๋๊ฒ ํ๋ ค๊ณ ํ๋ค.
์ฝ๋: ์ค์ ํLabel์ด๋ฆ.text = "์ํ๋ ๋ฌธ๊ตฌ"
์ด๋ฆ ์์ .text๋ฅผ ํ๋ ์ด์ ๋
Label์ ํ์
๊ณผ "๋ฌธ๊ตฌ" ํ์
์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ๋์
์ด ๋ถ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ด๋ค!
( → Label์ UILabel, "๋ฌธ๊ตฌ"๋ String )
์ด๋ ๊ฒ ํ๊ฒ ๋๋ฉด, 'Label์ด๋ฆ.text'์ ํ์
์ String์ด ๋์ด ๋์
์ด ๊ฐ๋ฅํด์ง๋ค!
์ด๋ ๊ฒ ๋น๋ํ๊ณ ์คํ์ํจ ํ, ๋ฒํผ์ ํด๋ฆญํ๋ฉด?
์ด๋ ๊ฒ ์ค์ ํ๋ ๋ฌธ๊ตฌ๋ก ๋ฐ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค!
์ฌ๊ธฐ๊น์ง ์ค๋ ๊ฐ์์์ ๋ฐฐ์ด
ํ๋ฉด๊ณผ ์ฝ๋๋ฅผ ์ฐ๊ฒฐํ๋ IBOutlet, IBAction์ด๋ค!
์์ผ๋ก ์ด๋ค ์๋ก์ด ๊ธฐ๋ฅ๋ค์ ๋ฐฐ์ฐ๊ฒ ๋ ์ง ๊ถ๊ธํ๊ณ ๊ธฐ๋๋๋ค.๐
๊ณ์ ์ด์ด์ ๋ฐฐ์๋๊ฐ๋ ๊ฒ๋ค์ด ์์ด๋ฉด์
๊น๋จน์ง ์๋๋ก ๊ณ์ํด์ ๋ณต์ตํ๊ณ ์ ๋ฆฌํด์ผ๊ฒ ๋ค.
'iOS ์ฑ ๊ฐ๋ฐ ์ข ํฉ๋ฐ > TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
2์ฃผ์ฐจ_Swift ๋ฌธ๋ฒ์ข ํฉ๋ฐ ๊ธฐ์ด_(3์ผ์ฐจ) (0) | 2024.03.06 |
---|---|
2์ฃผ์ฐจ_Swift ๋ฌธ๋ฒ์ข ํฉ๋ฐ ๊ธฐ์ด_(2์ผ์ฐจ) (4) | 2024.03.05 |
2์ฃผ์ฐจ_Swift ๋ฌธ๋ฒ์ข ํฉ๋ฐ ๊ธฐ์ด_(1์ผ์ฐจ) (0) | 2024.03.04 |
1์ฃผ์ฐจ(3) - ๋ฐ์ดํฐ ๊ด๋ฆฌ / ํ ์ด๋ธ ๋ทฐ(Table View) / ๋ค๋น๊ฒ์ด์ (2) | 2024.02.29 |
1์ฃผ์ฐจ_(1) - Interface Builder & UI ๊ตฌ์ฑ (2) | 2024.02.27 |