-
swift 정리 1swift 2023. 7. 16. 15:06반응형
배열 및 반복문
//반복문 // 레인지 // 0...5 // 0에서 5까지 for i in 0...5 { print("호호 index: \()") } // 0에서 5 밑에 까지만 for i in 0..<5 { print("호호 index: \()") } ///////////////////////// var myArr : [Int] = [1,2,3,4,5,6,7,8,9,10] // 기본 for 문 for item in myArr { print(item) } // where 조건아용 for문 for item in myArr where item % 2 == 0{ print("짝수 : \(item)") } for item in myArr where item % 2 != 0{ print("홀수 : \(item)") }
enum
// 타입을 나누는것 // 이건 값을 정의한것이 아니라 케이스만 나누어진것 enum School { // 기본적 표현 // case elementary // case middle // case high // 또는이렇게도 표현 가능 case elementary, middle, high } let mySchool = School.high // enum에 접근해 값을 담음 print ("mySchool: \(mySchool)") // mySchool: high ////////////////////////////////////////////// enum Grade : Int { case first = 1 case seconde = 2 } let myGrade = Grade.seconde.rawValue print ("myGrade: \(myGrade)") // myGrade: seconde let myGradeVal = Grade.seconde.rawValue print ("myGrade: \(myGradeVal)") // myGrade: 2 ///////////////////////////////////////////////// enum schooleDetail { // 파라미처로 값을 넣어줌 case elementary(name: String) case middle(name: String) case high(name: String) // 파라미터로 받은 값을 문자열로 반환 func getName() -> String { // 스위치문을 통해 schooleDetail 자신에 있는 값기준으로 케이스를 나누어줌 switch self { // 타입이 elementary면 case .elementary(let name): // 아래와 같은 것, 파라미터로 받아온 문자열을 반환 return name case let .middle(name): // 위와 같은 것, 파라미터로 받아온 문자열을 반환 return name case let .high(name): return name } } } let myMiddleSchooleName = schooleDetail.middle(name: "하준학교") print("myMiddleSchooleName: \(myMiddleSchooleName)") // myMiddleSchooleName: middle(name: "하준학교") print("myMiddleSchooleName: \(myMiddleSchooleName.getName())") // myMiddleSchooleName: 하준학교
랜던값 출력
// 랜덤값 출력 var randomInts: [Int] = [Int]() for _ in 0..<25 { let randomNumber = Int.random(in: 0..100) // 변수 선업후 랜던값 append 로 추가 randomInts.append(randomNumber) } print("randomInts: \(randomInts)") // 25번 반복 하면서 랜던으로 만들어진 0에서 100 까지의 숫자를 집어넣어 출력함 // 출력문은 25개의 숫자로 그때그떄 마다 다름
옵셔널 변수
// 옵셔널 변수 // 옵셔널이란? // 값이 있을수도 있고 없을수도 있다는 뜻 var someVariable: Int? = nil // 물음표를 붙이면 값이 없을수도 있다는뜻 플러터랑 값음 // Swift에서: nil은 pointer가 아닌, 특정 타입의 value가 없음을 나타낸다. null 과 같음 // Objective-C의 잔재로 pointer로 객체에 접근하는 개념이 사라진 Swift에 nil이라는 것이 남아있게 되었고 이는 다른 언어의 null과 동일한 개념 if someVariable == nil { someVariable = 90 } print("someVariable: \(someVariable)") // someVariable: Optional(90)
언랩핑
옵셔널 변수에 담긴값을 꺼낼때 사용
// 언랩핑이란? 랩 즉 감싸져있는것을 벗기는것 // 90만 딱 가져오는것 // 코드설명 : someVariable에 값이 있다면 otherVariable에 넣어서 쓰겠다는 뜻 if let otherVariable = someVariable { print("언랩핑됨. 값이있음: \(otherVariable)") } else { print("값이없음") } // 언랩핑됨. 값이있음: otherVariable : 90 someVal = nil // someVal이 비어있으면 기본값으로 이걸 넣겠다 let myval = someVal ?? 10 print("myval : \(myval)") // 10 var firstVal : Int ?? 30 var secondVal : Int ?? 50 unwrap(firstVal) unwrap(firstVal) // _ 를 붙여주면 외부에서 값을 던질떄 prameter: 라는것을 안붙여줘도돰 func unwrap(_ prameter Int?) { print("unwrap() called") // 값이 없으며 리턴해 버림 // 즉 무시하고 지나감 // unWrappedParam에 prameter 값 넣음 guard let unWrappedParam = prameter else { // else를 붙여서 값이 없다면 return 함 return } print(unWrappedParam: \(unWrappedParam)) } //결론 언랩핑 하는것은 if let, guard let 두가지가 있다
클래스 vs 스트럭트
스트럭트
메모리에 값을 복사 해서 사용
복사한 값을 수정해도 원래 값에 영향이 가지 않음
// 스트럭트 struct myStruct { var name : String var subscribersCount : Int } var devJeong = myStruct(name: "인하준", subscribersCount: 123) var devInClone = devJeong print("devInClone.name : \(devInClone.name)") // devInClone.name : 인하준 devInClone.name = "호롤롤로" print("devInClone.name : \(devInClone.name)") // devInClone.name : 호롤롤로 print("devJeong.name : \(devJeong.name)") // devJeong.name : 인하준
클래스
클래스는 서로 연결이 되어있음
메모리에 복사된 값을 수정하면 같이 변경됨
이유 : 같은 주소 메모리를 참조 하기 떄문에 수정
// 클래스 class myCLass { var name : String var subscribersCount : Int // 생성자 = 즉 메모리에 올린다 // init 으로 매개 변수를 가진 생성자 메소드를 만들어야 // 매게변수를 넣어서 그 값을 가진 객체(object)를 만들수 있다 init(_ name: String, _ subscribersCount: Int){ self.name = name self.subscribersCount = subscribersCount } } var inhajun = myCLass(name: "인하준", subscribersCount: 123) var inhajunClone = inhajun print("값 넣기전 inhajunClone.name : \(inhajunClone.name)") // inhajunClone.name : 인하준 inhajunClone.name = "호홓홓호호" print("값 넣은후 inhajunClone.name : \(inhajunClone.name)") // inhajunClone.name : 호홓홓호호 print("값 넣은후 inhajun.name : \(inhajun.name)") // inhajun.name : 호홓홓호호
반응형'swift' 카테고리의 다른 글
Swift 지도 만들기 Map View (0) 2024.11.23 swift present 메서드 (0) 2024.10.26 unrecognized selector sent to instance (1) 2024.10.26 Swift 피커 뷰 사용해서 원하는 항목 선택하기 (1) 2024.10.13 Swift 알람 시계 만들기 (2) 2024.10.13