본문 바로가기
728x90
[Swift] Enumeration Types 열거형 240315 상수나 변수로 값을 선언하면 값을 사용할 때 오타 등의 문제로 사용하기에 좋지 않다 그럴 때 열거형을 사용하면 오류가 많이 줄어 든다 선언 해 놓은 case 들이 자동완성으로 떠서 선택하기만 하면 된다 꼭 온점. 을 입력해야한다! 변수를 선언하고 타입을 보면 열거형 Alignment 라고 뜨는걸 볼 수 있다 열거형 케이스는 독립적인 '값' 이어서 변수에 저장 할 수 있다. --> 사실 이거 이해 못함,, 열거형을 if문으로 처리 할 때 if textAlignment == .center { print("center") } else if textAlignment == .left { print("left") } else { print("right") } 열거형을 switch문으로 처리 할 때 sw.. 2024. 3. 15.
[Swift] Dictionary 240315 Dictionary 특징 키와 값을 하나의 요소로 저장한다 정렬되지 않는 컬렉션 키와 값의 타입이 모두 같아야함 정식문법 Dictionary 콤마사용! 단축문법 [k:v] 콜론사용 let dict1: Dictionary let dict2: [String: Int] 요소 만들기 var dict = ["A": "Apple", "B": "Banana"] 초기화(빈 딕셔너리 만들기) dict = [:] //빈배열을 저장하거나 dict = [String: String]() //생성자를 사용해도 됨 dict = Dictionary() //정식문법으로 작성한 코드 요소 갯수 확인과 비어있는지 확인 let words = ["A": "Apple", "B": "Banana", "C": "City"] words.. 2024. 3. 15.
[Swift] Functions ,Parameter, Argument Label 240314 함수 Funtion 장점 : 재사용성 함수를 호출한다 라고 말한다 print 함수 print("hello") //hello 가 파라미터 //전달할 파라미터가 없다면 print() 함수를 만드는것 : 함수를 선언한다 라고 말한다 func sayHello() { print("Hello") } //여기까지 작성한걸 실행 해보면 아무일도 안일어난다 //기능을 만들어 두기만 한 것. 함수바디에 있는걸 호출 하려면 함수를 호출해야한다 sayHello() Return Values 리턴타입, 리턴형(리턴하는 자료형) 이라고 불리기도 함 중요 ! ! 리턴타입을 선언했으면 반드시 같은 타입의 값을 리턴해야한다 //작성하는 형식 func add () -> Int { return 1 + 2 //함수 바디에 문장이.. 2024. 3. 15.
[Swift] Break, continue Statement 240314 Control Transfer Statements 제어 전달문. 조건문과 반복문에서 사용함 for index in 1...100 { print("start \(index)") if index 10 { print("br") break } print("end") } 어떻게 출력 될지 생각해보기! 더보기 break Statement 현재 진행중인 문장을 중단하고 다음 문장을 실행함 예제) 홀수 인지 확인하는 코드 let num = 1 switch num { case 1...10: print("begin block") if !num.isMultiple(of: 2) { //값이 홀수 인지 .. 2024. 3. 14.
[Swift] Loop Statements (Range Operators, for-in Loop) 240314 Range Operators 범위 연산자 강의 lowerBound 2024. 3. 14.
[Swift] Assignment Operators 할당 연산자 240314 let a = 12 //왼쪽 피연산자는 항상 ㅁ ㅔ모리 공간을 가지고 있어야한다 var b = 12 b = 34 //복합 할당 연산자 Addition Assignment Operator var c = 0 // 아래 두 줄은 똑같은 코드 c = c + 1 // 1 = 0 + 1 print(c) //1 c += 1 // 2 = 1 + 1 print(c) //2 c = 1 print(c) //1 2024. 3. 14.
[Swift] Ternary Conditional Operator 조건 연산자 240314 강의 let hour = 12 hour < 12 ? "오전" : "오후" //두번째와 세번째 피연산자는 타입이 같아야한다 - if hour < 12 { "오전" } else { "오후" } 위에 조건연산자와 아래 if 문은 똑같은 역할을 하고 있다 그렇다면 조건 연산자는 언제 사용하느냐? 가독성을 높혀서 작성 하고 싶을 떄 사용함 2024. 3. 14.
[Swift] Strings and Characters 249314 강의 //타입추론 type annotation let str = "1" print(type(of: str)) let ch: Character = "1" print(type(of: ch)) //let doubleCh: Character = "aa" //에러. 두개이상의 문자는 문자열. 문자로 저장할 수 없다 let emptyCh: Character = " " //문자 타입의 공백을 저장하고 싶으면 공백을 입력해야한다 //==================== //형식추론 Type Inference let num = 123 //타입을 명시적으로 선언하지 않으면 입력값으로 추론한다 //타입을 선언하지 않으면 반드시 값을 저장해야한다 // Type annotation 타입 선언 : 형태가 복잡해지면 .. 2024. 3. 14.
Swift Scope 코드의 범위 240313 이미 듣고 정리한 내용인데도 새롭다,,,, 강의 //전역 범위 Global Scope {} 이거 밖에 //지역 범위 Local Scope {} 이거 안에 //#1 == #2 동일한 스코프 let g1 = 123 //#2에서 g1 사용 못함 print(g2) //여기까지만 실행 하면 g2 을 인식 할 수 없다 //error: algorithm.playground:13:7: error: cannot find 'g2' in scope //print(local1) //에러 상위 스코프는 하위 스코프에 접근 할 수 없다 func doSomething() { // #3 == #5 동일한 스코프 //로컬 스코프에선 상위 스코프에 접근 할 수 있다 // print(g1) // print(g2) let g1.. 2024. 3. 13.
Swift Naming convention 240313 문법은 아니지만 ,, 강의 UpperCamelCase - Class 클래스 - Struct 구조체 - Enumeration 열거형 - Extension 확장형 - Protocol 프로토콜 lowerCamelCase - Variable 변수 - Constant 상수 - Function 함수 - property 속성 - Parameter 파라미터 2024. 3. 13.
Swift Variables and Constants 240313 강의 //var (var키워드로 선언) var name = "Swift" //"Swift" 문자의 값이 name 에 저장됨 //토큰을 구분 할 수만 있으면 얼마든지 공백을 넣어도 됨 근데 가독성 떨어짐 var thisYear = 2022 var vaild = false //같은 숫자의 공간이 만들어졌고 저장됨? //저장된 값 불러오기 name //저장된 값을 불러오는 코드: 표현식 print(name) //실제 프로젝트엣 값을 불러올 때 쓰는 코드 //Swift\n" print 가 값을 불러올 때 자동으로 줄바꿈을 해서\n 이 출력 됨 //변수에 새로운 값을 저장 할 땐 var 키워드를 쓰지 않는다 name = "Steve" //값이 누적 되는 것이 아니라 값이 바뀌는 것 //var name.. 2024. 3. 13.
[Swift] Property observer 프로퍼티 관찰자(옵저버) 240311 일단 observer 가 뭔지 검색해 봤다 observer : 관찰자, 감시자 고로 Property observer 는 프로퍼티 관찰자 라고 할 수 있겠다 Property 가 뭐냐고 묻는다면 간략하게는 클래스, 구조체에서 선언하는 상수/변수 를 프로퍼티 라고 한다 프로퍼티에 대한 자세한 내용은 Swift git book 자료를 첨부 한다 프로퍼티 관찰자 (Property observers)는 프로퍼티의 값이 변경되는지 관찰하고 응답한다. 프로퍼티에 관찰자를 정의하는 방법은 willSet 과 didSet 이 있는데 willSet 은 값이 저장되기 직전에 호출됩니다. didSet 은 새로운 값이 저장되자마자 호출됩니다 영어 그대로 해석 하면 된다 (1) willSet(새로운 값 생성'될' 예정인.. 2024. 3. 11.
[Swift] Initializer 240307 생성자 Initializer 구조체 열거형 클래스 는 설계도 설계도로 만든 새로운 값을 Instance(객체) 새로운 Instance 를 만드는 과정을 Initialization (즉 초기화) 초기화의 목적 : 모든 속성을 적절한 값으로 초기화 해서 인스턴스를 기본상태로 만드는 일 class Position { var x = 0.0 //선언과 동시에 기본 값을 저장하는 방법. 동일한 방법으로 초기화 할 때 var y: Double // var z: Double? //옵셔널은 기본 값을 저장 하지 않으면 자동으로 nil로 초기화 한다 init() { y = 0.0 // 이렇게 하는게 귀찮아? 그래서 컴파일러가 디폴트 값을 호출해 줌 } } let p = Position() // 이렇게 이니셜라.. 2024. 3. 7.
UITableViewDataSource, UITableViewDelegate 240228 import UIKit class MyTableController: UIViewController { @IBOutlet weak var myTableView: UITableView! let friendsName: [String] = ["Jenny", "Lisa", "Roze", "Jisoo"] override func viewDidLoad() { super.viewDidLoad() myTableView.backgroundColor = .blue myTableView.delegate = self myTableView.dataSource = self } } extension MyTableController: UITableViewDelegate, UITableViewDataSource { func.. 2024. 2. 28.
[Swift] Array 240222 240315 배열타입 선언하기 정식 문법 Array 단축문법 [String] //타입선언 - 아래 코드 다 같음 let emptyArray: [Int] = [] let emptyArray2 = Array() let emptyArray3 = [Int]() //============== let emptyArray = [] //타입을 유추할 수 없어서 에러남 배열이 비어있는지 확인하는 법 isEmpty let nums = [1, 2, 3] nums.count //3 //================= //배열이 비어있는지 확인 nums.count == 0 //이렇게도 확인할 수 있는데 //false nums.isEmpty //isEmpty 를 사용하면 더 편리 함 //false 배열 요소에 접근하.. 2024. 2. 22.
[Swift] String Comparison & Searching 240221_3 240315 String Comparison 연산자로 비교 하는 방법 let bigA = "Apple" let smallA = "apple" let b = "Banana" bigA == smallA // false bigA != smallA // true bigA < smallA //true //아스키코드 ("A" as Character).asciiValue //65 ("a" as Character).asciiValue //97 bigA < b //false Method 로 비교 하는 방법 //순서가 같은지 비교 bigA.compare(smallA) == .orderedSame //false (대소문자 구분함) bigA.caseInsensitiveCompare(smallA) == .ord.. 2024. 2. 21.
[Swift] String Editing #2 240221_2 240315 Replacing Substrings 문자열 교체 var str = " Hello, Objective-C" if let range = str.range(of: "Objective-C") { str.replaceSubrange(range, with: "Swift") } str if let range = str.range(of: "Hello") { let s = str.replacingCharacters(in: range, with: "hi") s } Q: if let 은 옵셔널 바인딩 하는건데 왜 언랩핑을 하는거지? 더 간단한 방법 replacingOccurrences(of: , with: ) 대상 문자열에서 첫번째 파라미터로 전달한 문자열을 검색하고 두번째 파라미터로 전달한 .. 2024. 2. 21.
[Swift] Optionals 240221 240314 강의 Optional Type : 값을 저장하지 않아도 되는 타입 중요 : 변수와 상수는 값을 읽기전에 반드시 초기화 되어야 한다 Non-optional Type 넌옵셔널 타입 : 변수와 상수는 반드시 타입에 맞는 값을 가지고 있어야한다. 우리가 지금까지 선언한 변수 상수 값들,, 값이 없다는 걸 설명해야함 let stock: Int = 0 -> 상수를 잘못 이해하게 되고 논리적인 에러가 될 수 있다 let stock: String = "out of stock" -> 문자열은 오타가 날 수 있으니 좋은 방법이 아님 let stock: Int? = nil //nil : 값이 없다는 뜻. 타입이 없음. 타입을 명시적으로 선언해야한다. let str: String = "Swift" /.. 2024. 2. 21.
[Swift] String Editing #1 240220_4 240315 Appending String and Characters 문자열 연결 append 메소드 파라미터로 전달한 문자열[", ]을 대상 문자열["Hello"]에 바로 연결한다 var str = "Hello" str.append(", ") //append : return 값이 없음. 값을 리턴하지 않음 str // 결과 [Hello,] argument로 전달한 문자열이 뒤에 연결 됨 appending 메소드 대상 문자열을 직접 연결하는게 아니라 새로운 복사본을 만들어서 연결한 다음에 이 복사본을 리턴해 줌. let s = str.appending("Swift") //appending : String 값을 리턴함 str //[Hello,] s //[hello,Swift] //appen.. 2024. 2. 21.
[Swift] String Basics 240220_3 String Initialization var str = "Hello, Swift String" var emptyStr = " " emptyStr = String() //()-> 생성자: 함수처럼 호출 가능. 괄호 앞에 함수 이름 대신의 타입의 이름이 있다 let a = String(true) let b = String(12) let c = String(12.34) let d = String(str) // 다른 문자열로 새로운 문자열을 만들 때 //숫자를 특정 진법으로 바꾸기. 숫자 123을 16진수로 바꾸는 코드 let hex = String(123, radix: 16) //특정 문자 반복 let repeatStr = String(repeating: "A", count: 7) //유니코.. 2024. 2. 21.
[Swift] String Index 240220_2 startIndex endIndex import Foundation //[String index] //0부터 시작하는 정수. 특정 데이터의 위치를 나타냄. 문자열에서는 문자의 위치를 나타낼 때 사용 /* 문자 순서 Swift 01234 54321 */ let str = "Swift" str.startIndex //첫번째 문자의 인덱스. //첫번째 문자 출력 let firstch = str[str.startIndex] print(firstch) //마지막 문자 출력 /* let lastCh = str[str.endIndex] print(lastCh) --> 출력 안됨 endIndex 는 마지막의 다음이라는 뜻 -> Past the end 마지막 문자를 출력하고 싶으면 endIndex 바로 .. 2024. 2. 20.
[Swift] 개념공부 3 Singleline String Literal Multiline String Literal import Foundation //Singleine String Literal let s = "Hello, World" //[/n] 줄바꿈 let longS = "I wanna apple. U wanna banana.\n And he" // multiline String Loteral //반드시 새로운 라인에서 시작. 문자열은 따옴표 보다 오른쪽에 있어야한다. // \백슬래시는 줄바꿈 취소. 결과상에선 줄바꿈이 적용되지 않음 let multiline = """ I wanna apple. U wanna banana. And he """ 문자열 타입 String Types //Swift String (Swift 문자.. 2024. 2. 20.
[Swift] if, guard,switch Statement 240219 240314 if문 강의 예제1) let num = -123 if num >= 0 { print("Positive number or zero") } else if num % 2 == 0 && num >= 0 { print("positive even number") } else if num % 2 == 1 && num >= 0 { print("positive odd number") } else { print("negative number") } 문제점 : 조건이 중복 됨. && num >= 0 이 부분 조건이 겹치고 있음 let num = 123 if num >= 0 { print("Positive number or zero") if num % 2 == 0 { print("positive ev.. 2024. 2. 19.
[Swift] 자료형과 연산자 개념 240216 자료형 Integer Types(Int) 정수 //저장 할 수 있는 범위를 모를 때 Int8.min // -128 저장할 수 있는 최소값 Int8.max // 127 저장할 수 있는 최대값 Sined Type : 양수 음수 모두 저장 --> 보통 이거 사용! Unsined Type : 양수만 저장 Floating Types(Double) 실수 Boolean Types(Bool) 참과 거짓 Character Types 문자 문자가 하나 일 때만 빈문자를 저장할 때는 큰따옴표 안에 공백을 입력해야한다 String Types 문자열 큰따옴표 안에 있는건 글자의 갯수가 몇개던 문자열이다 두개 이상의 문자는 문자로 저장할 수 없다. *옵션키 누르고 클릭하면 타입 나오긴 해 연산자 산술 연산자 Arit.. 2024. 2. 16.
[Swift] 개념공부 240215_2 https://www.kxcoding.com/learning/essential-swift/token-expression-statement Token 가장 작은 단위의 요소 ex) 2 + 3 ; —> 4개의 토큰 키워드 (독점해서 사용하는 단어) 공백으로 쪼갤수 없어서 토큰으로 분류함 ex) I_f -> 띄어쓰기 하면 올바른 토큰이 아님 화이트스페이스 (공백,빈칸) 코드의 가독성을 높힘, 토큰을 구분하는 역할 표현식 expressions 하나이상의 토큰이 모여서 하나의 값으로 표현 되는 식 Evaluate 표현식을 평가한다(결과를 얻는것) Ex) let x = 7 x --(evaluate)--> 7 x +1 --(evaluate)--> 8 Statements (문장. 문) 하나이상의 표현식.. 2024. 2. 15.
[Swift] Scope가 먼데 230215_1 https://www.kxcoding.com/learning/essential-swift/scope 아직도 문법을 들어가지도 못했지만 기죽지 말어,, 너 기초도 모르잖아 현실을 받아들여 Scope 범위를 뜻 함 크게 두가지로 나뉘는데 전역범위 Global Scope 지구촌 느낌 그냥 지구라고 하자 지역범위 Local Scope 음 요건 나라 이 구분은 {} 브레이스 braces 로 나뉘게 된다 브레이스 하나 하나가 나라라고 보면 됨 로컬스코프 안에 스코프가 또 생길 수 있는데 쉽게 말하자면 나라 안에 지역이라고 보면 된다 한국 안에 서울 경기도 충북 경남 등등 이렇게 가정하고 오늘 공부한거 정리해 봄 - 코리아는 하나야 둘이 될 수 없어 규칙1 : 동일한 스코프에선 같은 이름을 쓸 수 없.. 2024. 2. 15.
[Swift] 기초 중의 기초 240214_3 주석 주석 comment 한마디로 메모 슬래시 두개로 라인 맨앞에 입력한다. 단축키 [ cmd + / ] 여러줄 주석 Multi-line comment /* */ 반드시 여는 주석과 닫는 주석 수를 일치 시켜야 한다 /* /* var greeting = "Hello, playground" print(greeting) */ */ 여러줄로 주석을 달 때에 단축키가 어떻게 작용할까 싶어서 해봤는데 커서를 놓은 주석이 삭제 되고 다시 생성 되지는 않았다. 그래서 반드시 * 요걸 입력해야하는게 넘 귀찮아 인라인 주석 Iline Comment var greeting = /* */ "Hello, playground" Importing Frameworks 템플릿 같은 존재. 모든 코드를 짜지 않아도 된.. 2024. 2. 14.
앱개발 용어 정리 IDE 통합 개발 환경( integrated development environment, IDE)은 또는 대화형 개발 환경은 소프트웨어 개발을 위해 컴퓨터 프로그래머에게 포괄적인 기능을 제공하는 소프트웨어 응용 프로그램. IDE는 일반적으로 소스코드 편집기, 빌드 자동화 도구 및 디버거로 구성됨. 컨벤션 - 코드를 관리하고 읽기 쉽게 만들기 위한 규칙 자료형 - 특정 목적에 맞는 자료를 저장하기 위해 만든 형식(format, layout) 변수와 상수 변수는 프로그램에서 데이터를 저장하고 변경이 가능한 값 상수는 프로그램에서 변경되지 않고 유지되며 수정되지 않는 값 메서드(Method) 특정 기능을 정의한 코드들의 집합 클래스(claasfication) 필요한 기능을 조합해서 '하나'로 묶고 이름을 붙여.. 2024. 2. 14.
728x90