iOS
웹개발자의 iOS 개발기(1) - Swift 기초 문법
whh__
2025. 1. 19. 08:38
나만의 앱을 만들어 보고 싶어 iOS 개발을 공부해 보려고 합니다.
'iOS 개발기'의 목표는 다음과 같습니다.
1. 결과만을 위한 코드를 작성하는 게 아닌 유지보수, 운영에 적합한 코드 작성법 배워보기
2. 나만의 앱 만들어 출시 해보기
도서나 구글링을 통해서도 입문할 수 있겠지만
여유롭지 않은 시간 때문에 최대한 효율적으로 공부하고 싶어 강의를 구매하게 되었습니다.
초격차 패키지 : 네카라쿠배 5개 앱으로 완성하는 iOS 앱 개발 | 패스트캠퍼스
네카라쿠배 출신 강사님들 먼저 클론코딩 진행 중! 네카라쿠배 iOS 멘토부터 WWDC Scholarship Winner까지, iOS 전문가 7인과 함께 네카라쿠배 5개 앱 주요 기능 100% 클론코딩하고 압도적 앱 개발 포트폴
fastcampus.co.kr
우선 Swift 문법을 찍어 먹어 보았습니다.
언뜻 보았을 때 자바스크립트와 유사하다고 느껴졌습니다.
01. 변수
변수 선언
var place: String
변수 사용
import SwiftUI
struct ContentView: View {
var name: String = "조우현"
var body: some View {
VStack {
Image(systemName: "globe")
.imageScale(.large)
.foregroundStyle(.tint)
Text("\\(name)님 안녕하세요!")
Text(name)
Text(name)
Text(name)
}
.padding()
}
}
#Preview {
ContentView()
}
02. 변수의 타입
import SwiftUI
struct _2_VariableType: View {
var name: String = "조우현"
var age: Int = 20
var height: Float = 178.9
var weight: Double = 77.0
var havePet: Bool = false
var body: some View {
Text("\\(name)")
Text("\\(age)")
Text("\\(height)")
Text("\\(weight)")
Text("\\(havePet.description)")
}
}
#Preview {
_2_VariableType()
}
03. 컬렉션
Array, Set, Dictionary
import SwiftUI
struct _3_Collections: View {
let name: String = "조우현" // let(상수): 초기화 후 변경 불가능
var name2: String = "조우현" // var(변수): 초기화 후 변경 가능
// 01.Array 초기화
var foods: [String] = ["eggs", "bananas", "beans"]
// 02.Set 초기화
var jazzs: Set<String> = ["bibidudu", "labdap", "dididudu"]
var hiphop: Set<String> = ["labdap", "rap", "wow"]
// 03.Dictionary 초기화
var koEngDict = ["사과":"Apple", "바나나":"Banana"]
var body: some View {
VStack {
// 01.Array 사용
Text(foods[0])
Text(foods[1])
Text(foods[2])
// 02.Set 사용
Button {
var intersectionMusic = jazzs.intersection(jazzs)
intersectionMusic.description
} label: {
Text("hit!")
}
// intersection(): Set 교집합
Text(hiphop.intersection(jazzs).description)
// 03.Dictionary 사용
Text(koEngDict["사과"]!)
Text(koEngDict["바나나"]!)
}
}
}
#Preview {
_3_Collections()
}
04. 조건문
if, guard
import SwiftUI
struct _4_Condition: View {
var count = 5
var hasLoggedIn = true
var body: some View {
if count > 4 {
Text("숫자는 4보다 큽니다")
} else {
Text("숫자는 4와 같거나 작습니다")
}
if hasLoggedIn {
Text("로그아웃 하시겠습니까?")
} else {
Text("로그인 하시겠습니까?")
}
guard hasLoggedIn else {
Text("로그인 하시겠습니까?")
}
Text("로그아웃 하시겠습니까?")
}
}
#Preview {
_4_Condition()
}
05. 반복문
import SwiftUI
struct _5_Loop: View {
let name: [String] = ["리이오","리이사", "춘리", "올리브", "바미", "나리"]
var body: some View {
VStack {
ForEach(name, id: \\.self) { item in
Text(item)
}
}
}
}
#Preview {
_5_Loop()
}
06. 함수
import SwiftUI
struct _6_Function: View {
@State var inputNumber: Int = 4
var body: some View {
VStack {
Text("Input number is \\(inputNumber)")
Button {
inputNumber = plusFive(input: inputNumber) // 함수 사용1
inputNumber = plusFive(with: inputNumber) // 함수 사용2
} label: {
Text("+5")
}
}
}
// 함수 선언1
func plusFive(input: Int) -> Int {
return input + 5
}
// 함수 선언2
func plusFive(with input: Int) -> Int {
return input + 5
}
}
#Preview {
_6_Function()
}
07. 중간 점검
import SwiftUI
struct _7_Half: View {
var name: String = "조우현"
var age: Int = 20
var names: [String] = ["리이오", "존", "바미", "테리우스", "올리비아"]
var body: some View {
VStack {
HStack {
Text("\\(name)입니다")
Image(systemName: "pencil")
}
Text("안녕하세요! \\(age)살의 \\(name)!")
}
List {
//Text("리이오")
//Text("존")
//Text("바미")
ForEach(names, id: \\.self) { name in
var welcome = sayHi(to: name)
if name == "리이오" {
Text("기다렸어요. \\(welcome)")
} else {
Text(welcome)
}
}
}
}
func sayHi(to name: String) -> String {
return "\\(name)님 반갑습니다."
}
}
#Preview {
_7_Half()
}