패스트캠퍼스에서 진행하는 나만의 iOS 앱 개발 입문 : iOS개발 강의를 듣고 작성하는 글 입니다.
이제 어느정도 swift라는 언어에 감이 잡혔다! 역시 모든 언어는 for문부터 돌려봐야 한다 ㅎㅎ 아직 문법이 익숙하지 않지만 그래도 이게 새로운 언어를 배우는 즐거움이니까 🧚🏻♀️
ts의 optional과 비슷하다 있어도 되고! 없어도 되고! 타입이 string이어도 되고 아니어도 되고!
그치만 swift에서는 신기한게 있다 optional로 선언을 하고 변수에 값을 넣으면 박스에서 꺼내야한다는 것이다! 이것이 무슨말인가하면...
var carName: String?
carName = "탱크으~"
이런식으로 optional박스 안에 값이 들어가있다! 이제 값을 어떻게 박스에서 꺼내느냐가 핵심이다!
print(carName!)
억지로 박스를 까는것이다!
if let unwrappedCarName = carName {
print(unwrappedCarName)
} else {
print("car name 없다")
}
if문을 사용하여 carName이 있다면 unwrappedCarName에 값을 넣어주고 없으면 없다는 print문을 실행한다. 이렇게 조건이 단순한 경우에는 level이 단조롭지만 깊은 조건을 만나게 되면 level이 아주 보기 힘들게 될 것이다. 이러한 문제점을 해결해주는 것이 guard이다
func printParsedInt(from: String) {
guard let parsedInt = Int(from) else {
print("Int로 컨버팅 안된다")
return
}
print(parsedInt)
}
printParsedInt(from: "100")
위 if let보다 훨씬 간단해졌다! 그리고 return문을 통한 불필요한 코드 실행을 하지 않는다
let myCarName:String = carName ?? "모델s"
// 만약에 carName이 nil이면 모델s를 넣어라
박스를 까봤더니 값이 nil이면 default값을 주자!
swift의 array는 타입이 같은 것끼리만 담아야한다!
evenNumbers2은[2,4,6,8]이라고 가정한다
evenNumbers2.append(10) // 배열 추가
evenNumbers2 += [12,14,16] // 배열 추가
evenNumbers2.append(contentsOf: [18,20])
let isEmpty = evenNumbers2.isEmpty
evenNumbers2가 비어있나? boolean값을 반환한다.
evenNumbers2.count
배열의 개수가 몇개인지 [1,2,3] => 3반환
let firstItem = evenNumbers2.first
evenNumbers2의 첫번째 값을 나타낸다. 반환값은 배열이 빈 값일 수도 있기때문에 옵셔널로 반환이 된다.
evenNumbers2.min()
evenNumbers2.max()
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 => 값을 바꿔준다.
key값은 유일해야한다.
var scoreDic:[String:Int] = ["jjung":20, "ho":10,"min":40]
if let score = scoreDic["jjung"] {
score
} else {
print("스코어 없음")
}// 20
scoreDic["won"] // nil
scoreDic.isEmpty
scoreDic.count
scoreDic["jjung"] = 99 // 업데이트
scoreDic["gg"] = 100 // 추가
scoreDic["gg"] = nil
for (name, score) in scoreDic {
print("\(name), \(score)")
}
for key in scoreDic.keys { // key값만 가져옴
print(key)
}