멀리 보는 연습

iOS 개발 강의 정리_Swift 기본 문법 본문

iOS 앱 개발/Swift

iOS 개발 강의 정리_Swift 기본 문법

푸실리 2022. 3. 1. 21:38

 

 

상수와 변수

// 상수
// let 상수명 : 데이터 타입 = 값
let a : Int = 100

// 변수
// var 변수명 : 데이터 타입 = 값
var b : Int = 200

예시

아이폰의 용량은 전체 공간, 사용 가능 공간으로 나뉘는데 전체 공간은 128GB와 같이 한 번 지정되면 변하지 않기 때문에 상수 타입이 적당하고, 사용 가능 공간은 수시로 변경되기 때문에 변수가 적당하다.

 

 

 

기본 데이터 타입

import Foundation

//Int
var someInt : Int = -100
someInt = 100

//UInt '-'와 같은 부호 사용 불가
var someUInt : UInt = 200

//Float
var someFloat : Float = 1.1
someFloat = 1
print(someFloat)

//Double
var someDouble : Double = 1.1
someDouble = 1

//Bool
var someBool : Bool = true
someBool = false

//Character
var someCharacter : Character = "가"
someCharacter = "A"
someCharacter = "😎"

//String
var someString : String = "안녕하세요🥰"

//타입 추론
var number = 10

var 변수명 : 데이터 타입 = 값

타입 추론이 신기한데 타입 추론은 데이터 타입을 입력하지 않고, var 변수명 = 값 만 입력해주면 컴파일러가 자동적으로 데이터 타입을 지정해준다고 한다. 넘나리 신기한 것...한가지 궁금한 점은 타입 추론을 알아서 해주는데 굳이 타입까지 선언할 필요가 있나..?

 

 

 

컬렉션 타입

데이터들의 집합 묶음

1. Array : 데이터 타입의 값들을 순서대로 저장하는 리스트

2. Dictionary : 순서 없이 키(key)와 값(value) 한 쌍으로 데이터를 저장하는 컬렉션 타입

3. Set : 같은 데이터 타입의 값을 순서없이 저장하는 리스트

 

 

1. Array(배열)

//배열
// 배열을 선언하는 방법 1
var numbers : Array<Int> = Array<Int>()

//순서대로 배열에 담긴다.
numbers.append(1)
numbers.append(2)
numbers.append(3)

numbers[0]
numbers[1]

// 추가
numbers.insert(4, at: 2)
// 삭제
numbers.remove(at: 0)
numbers

// 배열을 선언하는 방법 2
var names1 = [String]()
// 배열을 선언하는 방법 3
var names2 : [String] = []

배열을 선언하는 방법을 세가지 정도 배웠다.

  1. var 변수명 : Array<데이터타입> = Array<데이터타입>()
  2. var 변수명 : 데이터타입
  3. var 변수명 : [데이터타입] = []

너무 헷갈리는군...

 

2. Dictionary(딕셔너리)

//딕셔너리
var dic1 : Dictionary<String,Int> = Dictionary<String,Int>()
var dic2 : [String: Int] = ["송가현":31]

//값 추가
dic2["박선재"] = 32
dic2

//값 변경
dic2["송가현"] = 21
dic2

//삭제
dic2.removeValue(forKey: "박선재")
dic2

여기도 선언하는 방법

var 변수명 : Dictionary<key의 데이터타입:value의 데이터타입> = <key의 데이터타입:value의 데이터타입>

 

3. Set

//Set 선언
var set : Set = Set<Int>()

// Set 멤버 추가
set.insert(10)
set.insert(20)
set.insert(30)
set.insert(30)
set

//Set 멤버 삭제
set.remove(20)
set

Set이란 중복이 없는 Int형만 사용 가능하며, 축약형으로 선언할 수 없다. 순서대로 정렬도 되지 않고, 똑같은 값을 여러 번 넣어도 중복 없이 한 번만 저장된다. 

 

 

함수

작업의 가장 작은 단위이자 코드의 집합

func 함수명 (파라미터이름:데이터타입) → 반환타입{

return 반환 값

}
func sum(a: Int, b: Int) -> Int{
    return a+b
}

sum(a: 5, b: 6) //11

func hello() -> String{
    return "hello"
}

hello() //"hello"

func printName() -> Void{
    
}

func greeting(friend: String, me: String = "Kim"){
    print("Hello, \(friend)! I'm \(me)")
}

greeting(friend: "Gahyun") //"Hello, Gahyun! I'm kim\n"

 

 

전달인자 레이블

함수를 호출할 때, 전달인자 레이블을 사용하면 사용자 입장에서 매개변수 입장을 좀 더 명확하게 표현 가능

func 함수 이름(전달인자 레이블 : 매개변수 이름 : 매개변수 타입, 
전달인자 레이블: 매개변수 이름 : 매개변수 타입...) -> 변환 타입 {
        return 반환값

}
func sendMessage(from myName: String, to name : String)-> String{
    return "hello \(name)! I'm \(myName)"
}

sendMessage(from: "Gahyun", to: "Sunjae")

// 전달인자 레이블을 사용하고 싶지 않다면, 언더바(_)를 넣어주면 된다.
func sendMessage(_ name : String) -> String{
    return "Hello \(name)"
}
sendMessage("Gahyun")


//가변 매개변수 ( 매개변수의 값이 몇개 들어올지 모르겠을 때 사용함, 함수마다 하나씩만 사용 가능 )
func sendMessage(me: String, friends: String...)->String{
    return "Hello \(friends)! I'm \(me)"
}

sendMessage(me: "Gahyun", friends: "Sunjae", "hyuna", "WooSeung")

 

조건문

주어진 조건에 따라서 애플리케이션을 다르게 동작하도록 하는 것

1. if

2. switch

3. guard

 

if

/*
 if 조건식{
    실행할 구문
 }
 */

let age = 40

if age < 19 {
    print("미성년자입니다.")
}

/*
 if 조건식{
    실행할 구문
 }else{
    만족하지 않으면 해당 구문 실행
 }
 */

if age < 19 {
    print("미성년자")
}else{
    print("성인")
}

/*
 if 조건식1{
    조건식1을 만족할 때 실행할 구문
 }else if 조건식2{
    조건식2를 만족할 때 실행할 구문
 } else {
    아무 조건식도 만족하지 않을 때 실행할 구문
 }
 */

let animal = "pig"

if animal == "dog"{
    print("강아지 사료 주기")
}else if animal == "cat"{
    print("고양이 사료 주기")
}else{
    print("해당하는 동물 사료 없음")
}

 

 

switch

/*
 switch 비교 대상{
    case 패턴 1 :
        패턴 1 일치할 때 실행되는 구문
    case 패턴 2 :
        패턴 2 일치할 때 실행되는 구문
    default :
        어느 비교 패턴과도 일치하지 않을 때 실행되는 구문
 }
 
 */

let color = "green"

switch color {
case "blue":
    print("파란색입니다.")
    
case "green":
    print("초록색입니다.")
default :
    print("찾는 색상이 없습니다.")
}

let temperature = 60

switch temperature{
case -20...9 :
    print("겨울입니다.")
    
case 10...14 :
    print("가을입니다.")

case 15...25 :
    print("봄입니다.")
    
case 26...35 :
    print("여름입니다.")
    
default :
    print("섭씨로 입력하셨나요?")
    
}

 

반복문

반복적으로 코드가 실행되게 만드는 구문

 

1. for-in

2. while

3. repeat-while

/*
 for 루프상수 in 순회대상 {
    // 실행할 구문
 }
 */

for i in 1...4{
    print(i)
}

let array = [1,2,3,4,5]

for i in array{
    print(i)
}

/*
 while 조건식 {
    // 실행할 구문
 }
 */

var number = 5

while number < 10 {
    number+=1
}

number

/*
 repeat {
    // 실행할 구문
 } while 조건식
 */

var x = 6

repeat {
    x+=2
} while x < 5
            
print(x)

 

Comments