블로그

23.01.03 학습일기

15. Optional_3// if let(var)// guard let(var)var myAge1: Int? = 20var myAge2: Optional<Int> = 40myAge1이 nil이 아닐 경우, 그냥 Int 값으로 처리 가능따라서, myAge1은 unwrapping 가능var sum = 0if let age = myAge1 { sum+age+1 // 21} 그러나, myAge1이 nil일 경우, myAge1은 unwrapping 할 수 없기 때문에 연산 불가var sum = 0myAge1 = nil // nilif let age = myAge1 { sum+age+1 // 21} // 0if let(var)과 형식은 똑같은데 동작되는 방식이 다른 것 = guard let(var)guard let age = myAge1 else { // 값을 가져오지 못했을 때 // guard 문은 중단시키고자 할 때 사용 return // 해당되는 코드블럭 끝남을 의미 //fatalError("여기는 nil이 나오면 안 되는 부분입니다.") // 앱 자체를 종료시키면서 에러 표시를 나타내는 기능, 왜 에러 발생했는지 써주기}age // age 가져왔을 때 처리는 밑에 씀16. Operators_1var (age1, age2) = (10, 20)let newStr = str1 + " " + str2var arr1 = ["a", "b", "c"]var arr2 = ["d", "e", "f"]var newArr = arr1 + arr2 // 배열도 합치기 가능, ["a", "b", "c", "d", "e", "f"]// String이나 Array 같은 경우 타입 같으면 +연산 했을 때 이어붙여서 출력됨//Remainder Operator 나머지 값 알려주는 연산자 % -> Int 타입만 가능!!!var num1 = 8var num2 = 3num1 % num2 // 2// Double 타입var num3: Double = 8var num4: Double = 3num3.truncatingRemainder(dividingBy: num4) //2!! num3.remainder(dividingBy: num4) // -1이 나옴 => why?==> num3 / num4를 하면 2.66666이 나오는데, 몫은 가까운 정수로 표현되여 3이 된다.이 때, 3X3(num4)=9가 되어 8(num3)보다 1이 커지므로, -1이 출력된다.17. Operators_2var a = "a"var b = "b" // 문자 - 대소 비교 가능if a>b { print("true")}else { print}// Range Operator// 범위 0...5for index in 0..<5 { print(index)}let names = ['"kim", "lee", "min"]for index in 0..<names.count) { print(names[index]}for name in names { print(name) // 범위 지정 하지 않아도 처음부터 끝까지 도는 것}for name in names[1...] // 1부터 끝까지 쓴다는 의미for name in names[...3] // 처음부터 3까지 쓴다는 의미&& AND|| OR.toggle()은 해당 성질을 반대로 바꿔버림 - 원본 자체가 바뀜isGreen.toggle() - falseisGreen - false18. Unicode// 문자 -> 내부적으로 특정한 코드 값(16진수)\u안에 코드 값 넣으면 유니코드 나옴"a""\u{61}" // "a""가를" 유니코드로 변경하고 싶다면?UnicodeScalar("가") // 44032-But 이것은 10진수유니코드는 16진수이기 때문에, 44032를 16진수로 바꾸기 위해서는?String(44032, radix: 16) // AC00// 숫자만 입력let inputValue = "ㄱ"if inputValue >= "\u{30}" && inputValue <= "\u{39}" // 0 에서 9 { print("숫자")} else{ print("숫자 아님")}// 한글만 입력UnicodeScalar("가") // 44032String(44032, radix: 16) // ac00UnicodeScalar("힣") // 55203String(55203, radix: 16) // d7a3if inputValue >= "\u{ac00}" && inputValue <= "\u{d7a3}" // 0 에서 9 { print("한글")} else{ print("한글 아님")}

모바일 앱 개발학습일기iOSswift모바일앱개발

23.01.02 학습일기

13. Optional_1Optional type이란?값이 있을 수도, 없을 수도 있음. 타입에 ?를 붙임. 모든 타입은 Optional type 가능값이 없다라는 개념은 - nil로 표현 (null) - 어떤 상태인지 모른다는 뜻var age: Int? = 100 // 값을 넣어도 되지만var age1: Int? = nil // 값이 없다. nil을 쓰는 것이 더 맞는 표현. 메모리에 아직 올라가지 않은 상태를 말함var age2: Int = 0과 다른 의미임!!! 값이 있는 상태if age1 == nil {// print("나이가 0살이다") - 틀림print("나이 값을 확인할 수 없다.)}var str1: String = "" // 값이 있음var str2: String? = nil // 값이 없음if str2 == nil {//print("글자 개수가 0개이다") - 틀림print("글자를 쓰지 않았다. 스트립 값이 어떤 지 모른다)}var myfavorite: [String]? // String 타입의 Optional 배열, 초기 값 안 주면 nil로 처리됨if myfavorite == nil {// print("내 즐겨찾기 개수가 0개다") - xprint("내 즐겨찾기 개수를 받아오는데 실패했습니다.")}14. Optional_2// unwrapping// 옵셔널로 래핑(wrap) 되어 있다.var myAge1: Int = 20var myAge2: Optional<Int> = 40var sum = myAge2 + 1 // error. unwrapped 해야 함. 옵셔널이 되는 것이 있고 안 되는 것이 있는데, +는 Optinal로 사용할 수 없는 기능// force unwrapping (강제로 unwrapping 하는 것, ! 붙이기)var sum = myAge2! + 1// 주의 사항myAge = nilmyAge! // error. 앱이 죽은 상태. 절대 하면 안됨var sum2 = (myAge1 ?? 0) + 1 // myAge1이 nil일 경우 0으로 대체하여 사용하겠다는 뜻

모바일 앱 개발학습일기iOSswift모바일앱개발

채널톡 아이콘