본문 바로가기

iOS

(115)
[iOS] [Swift] Stack과 Queue Stack & Queue with Swift Stack struct Stack { var stack = [T]() var isEmpty: Bool { return self.stack.isEmpty } var top: T? { return self.stack.last } mutating func push(_ item: T) { self.stack.append(item) } mutating func pop() -> T? { guard self.isEmpty == false else { return nil } return self.stack.popLast() } } LIFO, Array를 이용해 구현하였다. 다양한 자료형을 수용할 수 있도록 Generic을 이용하여 유연성을 더한다. push , pop 메서드..
[iOS] Generic in Swift Generic in Swift Generic? 많은 프로그래밍 언어에서 이용되는 개념 Generic은 Swift에서도 지원한다. 제네릭 코드는 코드를 더욱 유연하게 작성할 수 있고, 재사용이 가능한 함수와 타입을 지원하여 작업할 수 있도록 요구사항을 정의한다. 이를 통해 중복을 피하고, 의도를 명확히 하여 추상적인 방법으로 코드를 작성할 수 있다. 제네릭은 Swift에서 가장 강력한 기능 중 하나로 실제로 Swift 표준 라이브러리 대다수는 제네릭 코드로 만들어져있다. let strArr = [String]() let intArr = [Int]() Swift의 배열과 딕셔너리 타입은 제네릭 타입이다, 그렇기에 우리가 배열을 생성할 때 Int 값을 갖는 배열이나 String 값을 갖는 배열 또는 다른 타입..
[iOS] Observer Pattern in Swift Observer Pattern in Swift 오늘은 Swift Design Pattern 중 Observer Pattern에 관하여 알아보도록 한다! What is Observer Pattern? Observer, 내가 아는 옵저버는 스타크래프트에서 나오는 옵저버 뿐.. 이지만, 어떻게 보면 그 옵저버와 동일하다! Observer는 단어의 뜻 그대로 관찰자 역할을 한다. Observer Pattern은 프로퍼티가 변경 여부를 관찰하고 있다가 변경 되는 시점에서 update가 수행되는 방식의 디자인 패턴을 의미한다! 즉, 객체의 상태 변화에 따라 다른 객체의 상태 또한 연동되도록 객체간의 1:N 의존 관계를 구성하는 패턴이다. 우리가 코드를 작성하다 보면 특정 값에 대한 변경이 발생할 때 연쇄적으로 해당..
[iOS] 고차함수 in Swift Higher-order Function in Swift 이번 시간에는 iOS 앱 개발을 위해 Swift 를 공부하면서, PS 언어로 Swift 를 사용하면서 익히 보고 들었던 고차함수에 대해 알아보려고 한다. What is Higher-order Function 자, 그러면 고차함수에 대하여 살펴보기 이전에 고차함수가 무엇인지 먼저 개념을 살펴보도록 하자! 고차함수(Higher-order Function) 함수의 인자로 함수를 취하거나 결과를 함수로 반환하는 함수 스위프트에서 유용한 고차함수는 대표적으로 map, filter, reduce 가 있다. 함수의 인자로 함수를 가지는 형태 또는 함수의 반환값이 함수 형태인 함수를 고차함수라고 칭한다! Swift에서의 함수는 일급시민으로 취급되기에 다른 함수의 ..
[iOS] Swift Basic for PS Swift basic for PS 본 문서에는 알고리즘 문제풀이를 위한 Swift 기본 문법을 정리한다. 키보드 입력받기 let inputValue = readline() print(inputValue) readLine() 함수의 반환값은 Optional String이다. 따라서, 옵셔널 값을 반환한다. Optional Unwrapping 을 강제로 진행하는 것은 지양해야 하지만 PS 목적의 코드이며 변수에 값이 들어있음을 확신할 수 있기에 강제 언래핑을 진행한다. let inputValue = readline() print(inputValue!) 이를 응용해보자. split()으로 쪼개기 let nums = readLine()!.split(seperator: " ") // ["1", "2", "3",..
[iOS] How to use Firebase Database in iOS How to use Firebase Database in iOS 본 문서에서는 Firebase 에서 제공하는 기능 중 하나인 Database에 관하여 기재한다. Firebase 실시간 데이터베이스 Firebase 실시간 데이터베이스는 클라우드 호스팅 데이터베이스다. 데이터는 JSON 형태로 저장되며 연결된 모든 클라이언트에 실시간으로 동기화된다. 앱에 Firebase 실시간 데이터베이스 추가 프로젝트 Podfile에 아래와 같이 의존성을 추가해준다. pod 'Firebase/Database' 이후 podinstall 을 한 뒤, .xcwordkspace 파일을 연다. 실시간 데이터베이스 규칙 구성 실시간 디비가 제공하는 규칙 언어로 데이터의 구조, 인덱스 생성 방법, 데이터를 읽고 쓸 수 있는 조건을 정..
[iOS] How to use Firebase Auth in iOS How to use Firebase in iOS 본 문서에서는 Firebase 에서 제공하는 실시간 데이터베이스 관련 공식 문서를 살펴보며 이에 대한 사용방법을 기재하도록 한다. How to install and setup on iOS Firebase 실시간 데이터베이스는 클라우드 기반 호스팅 DB이다. 데이터는 JSON 형태로 저장되며 연결된 모든 클라이언트에 실시간으로 동기화된다. 프로젝트의 Podfile에 아래 항목을 추가한다. pod 'Firebase/Database' pod을 설치한 이후 .xcwordspace 파일을 연다. RealTime Database setting Firebase 를 사용하기 위해서는 우선 Firebase를 초기화 해야 한다. 초기화 방법은 아래와 같다. AppDelega..
[iOS] Unit Test UnitTest 오늘은 익히 들었지만 iOS에서는 한번도 도전해보지 못했던 UnitTest 라는 것을 실습해보며 정리해본다. UnitTest란? UnitTest 직역하면 단위 테스트다. 즉, 컴퓨터 프로그래밍에서 작성된 소스 코드의 모듈 단위를 의도대로 정확히 작동하는지 검증하는 루틴을 의미한다. 이를 통해서 핵심 기능인 모델 클래스 및 메소드와 컨트롤러와의 상호작용, UI의 워크 플로우 등을 확인하고 문제가 발생할 경우, 단시간 내에 이를 파악하고 바로 잡을 수 있도록 도와준다. 이상적으로, 각 테스트 케이스는 모두 서로 분리되어야 하며 이를 위하여 가짜 객체 (Mock Object)를 생성하는 것 또한 좋은 방법이다. 이러한 테스트를 주도적으로 하는 TDD (Test-Driven-Development..