분류 전체보기 175

[Swift] 서브스크립트

💡서브스크립트(Subscript)? 클래스, 구조체, 열거형에서 컬렉션, 리스트, 시퀀스 등 타입의 요소에 접근하기 위한 문법 서브스크립트를 사용하면, 추가적인 메소드 없이 특정값을 가져오거나 할당할 수 있다. ➰ 서브스크립트 문법 subscript(index: Int) -> Int { get { // 적절한 Return Value } set(newValue) { // 적절한 Set Action } } 근데 그냥 아래처럼 subscript(index: Int) -> Int { // 적절한 반환 값 } get, set 아무것도 없이 설정할 경우, get으로 동작하게 되서 읽기 전용으로 선언된다. 🚫 get-only는 가능하지만, set-only는 불가능 예제코드로 서브스크립트의 getter와 setter의..

Swift 2022.08.13

[Swift] 상속

Swift 에서의 상속 프로토콜, 클래스에서 사용 가능 열거형, 구조체에서는 사용 불가 다중상속 지원 X 클래스에서의 상속에 대해 알아보자! 1️⃣ 상속 정의 class 이름 : 상속받을 클래스 이름 { // 구현 } 2️⃣ 메소드 키워드 정리 class Person{ var name: String = "" func selfIntroduce() { print("저는 \(name) 입니다.") } // final 키워드 : 재정의 방지 final func sayHello() { print("hello") } // 타입메서드 // 재정의 불가 타입 메서드 : static static func typeMethod() { print("type method - static") } // 재정의 가능 타입 메서드 :..

Swift 2022.08.02

[Swift] 백준 : 10814 (구조체)

구조체를 공부를 위해 좋은 문제라고 생각되는 10814! 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 여러 변수를 보고 구조체를 생각해 낸 후, 배열에 구조체를 저장한 후 특정 프로퍼티의 정렬순서에 맞게 출력하는게 핵심이라고 생각한다👀 순서를 정리해보자면, name, age를 담은 Member 구조체 생성 구조체를 저장하기 위한 배열 memArr 생성 입력받은 데이터를 Member 구조체의 프로퍼티에 맞게 지정후, memArr에 append! memArr을 age 오름차순으로 정렬 후, sortedArr에 저장 ..

Swift 2022.08.02

[Swift] zip(_:_:)

zip(_:_:) - 두개의 시퀀스를 가지고 하나의 시퀀스 쌍을 만들어냄 let words = ["one", "two", "three", "four"] let numbers = 1...4 for (word, number) in zip(words, numbers) { print("\(word): \(number)") } // Prints "one: 1" // Prints "two: 2 // Prints "three: 3" // Prints "four: 4" 배열의 짝을 맞추는 데에 사용될 수 있음 예를 들어 arr1 = [[3, 4], [5, 6]] arr2 = [[3, 4], [5, 6]] arr3 = [[6, 8], [10, 12]] 이렇게 arr1, arr2의 각 원소를 더해 arr3를 만들어보자 i..

Swift 2022.07.27

[iOS : Toy Project] Github Profile (2) : Refactoring

💡 Github Profile Project Refactoring! Refactoring이 이루어질 이전 코드는 위의 링크에서 참고하자 - Resource와 NetworkService를 이용해서 코드를 줄여보자 - Resource 를 이용해서 아래의 코드 줄여보기 = URLRequest 에 필요한 것을 만들어줌 let base = "https://api.github.com/" let path = "users/\(keyword)" let params: [String:String] = [:] let header: [String:String] = ["Content-Type":"application/json"] var urlComponents = URLComponents(string: base+path)! le..

iOS/Toy project 2022.07.17

[iOS : Toy Project] Github Profile (1)

💡 Network을 이용해, Github 프로필 가져오기! 들어가기에 앞서,, SearchViewController에 Component 연결까지도 되어있다! 일단 ViewController에서 해줘야 할 일은 setupUI : UI 세팅 userProfile 데이터 확인 Binding : User가 업데이트 되면, UI까지 업데이트 되게! searchControl 세팅 network 세팅 이다. 천천히 해보자! 1️⃣ setupUI private func setupUI() { // thumbnail 이미지 Radius 설정 thumbnail.layer.cornerRadius = 80 } 2️⃣ userProfile 데이터 Binding var subscriptions = Set() @Published p..

iOS/Toy project 2022.07.16

[iOS] iOS에서의 네트워크

1️⃣ URLSession iOS 네트워크 작업을 도와줌 URLSesstion을 이용해서 서버와 소통 URLSessionConfiguration .default - 디스크를 이용한 정보 저장을 하는 configuration - 그냥 브라우저를 띄울 때 .ephemeral - default랑 비슷핸데, 몇가지 정보들을 저장하지 않음 (쿠키, 인증서 등) - 브라우저 시크릿 모드라고 생각하면 쉬움 .background - 네트워크를 통해, 파일다운로드 받을 때 - 앱이 백그라운드에서 돌 때도, 다운도르 시켜줄 수 있음 URLSession : contifuration을 보고, 세션을 생성 URLSessionTask dataTask uploadTask downloadTask 2️⃣ Codable - swift ..

iOS 2022.07.14

[iOS] 네트워크 왕 기초 개념

알아 놓을 용어 1️⃣ Concurrency - 여러개의 작업이 동시에 일어나는 것처럼 보이게 하는 것 2️⃣ Thread - 각 작업들이 일어나는 공간 - Main-Thread, Background, Custom 3️⃣ Async vs. Sync Task - 동기: request, return이 같음 - 비동기: request, return이 동시가 아님 📌 HTTP 1️⃣ HTTP - 서버와 대화하는 방식(통신 규약) 2️⃣ 데이터 요청 URL : 서버에 데이터를 요청하기 위해 입력하는 영문 주소 Request Method GET(존재하는 자원에 대한 요청) POST(새로운 자원 생성) PUT(존재하는 자원에 대한 변경) DELETE(존재하는 자원에 대한 삭제) 3️⃣ 데이터 응답 status cod..

iOS 2022.07.14

[iOS : Toy Project] Apple Framework List (4) : Combine

➰ 이전 코드 내용 Apple Framework List(1) Apple Framework List(2) Apple Framework List(3) : Modal ➰ Combine 개념 정리 Combine(1) : Overview Combine(2) : Publisher/Subscriber/Operator 💡 Apple Framework List(4)에서 할 것은 Combine 적용! - Combine을 적용할 View Controller에 Combine을 Import 해야함! 일단, 이전 코드를 정리해볼까? 이전코드 // FrameworkListViewController.swift import UIKit class FrameworkListViewController: UIViewController { /..

iOS/Toy project 2022.07.08

[iOS] Combine (2) : Publisher / Subscriber / Operator

Combine(1)에서 간단히 정의한 Publisher / Subscriber / Operator 1️⃣ Publisher - 생산자 2️⃣ Subscriber - 소비자 3️⃣ Operator - 가공자 Event Stream(Event Pipeline) - Publisher → Operator → Subsciber - 위와 같은 순서에서 어떠한 이벤트들이 생길지 모르니, Combine이라는 비동기 Framework가 필요함! 더 자세히 알아보자! 1️⃣ Publisher protocol Publisher { associatedtype Output// 구체적인 Output 정의 associatedtype Failure: Error// 구체적인 Failure 정의 func subscribe(_ subsc..

iOS 2022.07.03