[Swift] 나만의 iOS 앱 개발 입문 : iOS개발 강의 (1-2)

hojung choi·2021년 12월 7일
0

개요

패스트캠퍼스에서 진행하는 나만의 iOS 앱 개발 입문 : iOS개발 강의를 듣고 작성하는 글 입니다.


📅 2주차

이제 어느정도 swift라는 언어에 감이 잡혔다! 역시 모든 언어는 for문부터 돌려봐야 한다 ㅎㅎ 아직 문법이 익숙하지 않지만 그래도 이게 새로운 언어를 배우는 즐거움이니까 🧚🏻‍♀️


✅ Optional

ts의 optional과 비슷하다 있어도 되고! 없어도 되고! 타입이 string이어도 되고 아니어도 되고!
그치만 swift에서는 신기한게 있다 optional로 선언을 하고 변수에 값을 넣으면 박스에서 꺼내야한다는 것이다! 이것이 무슨말인가하면...

var carName: String?
carName = "탱크으~"

이런식으로 optional박스 안에 값이 들어가있다! 이제 값을 어떻게 박스에서 꺼내느냐가 핵심이다!

👉🏻 Forced unwrapping

print(carName!)

억지로 박스를 까는것이다!


👉🏻 Optional binding (if let)

if let unwrappedCarName = carName {
    print(unwrappedCarName)
} else {
    print("car name 없다")
}

if문을 사용하여 carName이 있다면 unwrappedCarName에 값을 넣어주고 없으면 없다는 print문을 실행한다. 이렇게 조건이 단순한 경우에는 level이 단조롭지만 깊은 조건을 만나게 되면 level이 아주 보기 힘들게 될 것이다. 이러한 문제점을 해결해주는 것이 guard이다


👉🏻 Optional binding (guard)

func printParsedInt(from: String) {
    guard let parsedInt = Int(from) else {
        print("Int로 컨버팅 안된다")
        return
    }
    print(parsedInt)
}
printParsedInt(from: "100")

위 if let보다 훨씬 간단해졌다! 그리고 return문을 통한 불필요한 코드 실행을 하지 않는다


👉🏻 Nil coalescing

let myCarName:String = carName ?? "모델s"
// 만약에 carName이 nil이면 모델s를 넣어라

박스를 까봤더니 값이 nil이면 default값을 주자!



✅ Array

swift의 array는 타입이 같은 것끼리만 담아야한다!

evenNumbers2은[2,4,6,8]이라고 가정한다

👉🏻 배열 추가

evenNumbers2.append(10) // 배열 추가
evenNumbers2 += [12,14,16] // 배열 추가
evenNumbers2.append(contentsOf: [18,20])

👉🏻 isEmpty

let isEmpty = evenNumbers2.isEmpty

evenNumbers2가 비어있나? boolean값을 반환한다.


👉🏻 count

evenNumbers2.count

배열의 개수가 몇개인지 [1,2,3] => 3반환


👉🏻 first

let firstItem = evenNumbers2.first 

evenNumbers2의 첫번째 값을 나타낸다. 반환값은 배열이 빈 값일 수도 있기때문에 옵셔널로 반환이 된다.


👉🏻 min, max

evenNumbers2.min()
evenNumbers2.max()

👉🏻 ... , contain, insert

let firstThree = evenNumbers2[0...2]
evenNumbers2.contains(3) // 3을 반환하는 것이 있니? boolean으로 반환
evenNumbers2.insert(0, at: 9) // 9번째에 0을 넣는다 (나머지는 뒤로밀림)

... => 배열의 0번째부터 2번째까지 가져온다 ([2,4,6])
contains => 해당값을 반환하는것이 있으면 true 없으면 false
insert => 값을 바꿔준다.



✅ Dictionary

key값은 유일해야한다.

var scoreDic:[String:Int] = ["jjung":20, "ho":10,"min":40]
if let score = scoreDic["jjung"] {
    score
} else {
    print("스코어 없음")
}// 20
scoreDic["won"] // nil

👉🏻 isEmpty, count

scoreDic.isEmpty
scoreDic.count

👉🏻 Dictionary 업데이트, 추가

scoreDic["jjung"] = 99 // 업데이트
scoreDic["gg"] = 100 // 추가

👉🏻 Dictionary 삭제

scoreDic["gg"] = nil

👉🏻 For loop

for (name, score) in scoreDic {
    print("\(name), \(score)")
}

👉🏻 keys

for key in scoreDic.keys { // key값만 가져옴
    print(key)
}
profile
🧚🏻‍♀️ Front-End Developer

0개의 댓글