[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

🍎 Apple 97

[Combine] Operator (4): Sequence Operator

Sequence Operator Combine에서 Operator는 Publisher를 가공해 다른 형태나 구성으로 변경해주는 역할을 한다. Upstream으로부터 전달받은 데이터를 가공하여 downstream으로 전달하는 것이다. 그 중 배열로 이루어진 Output을 변환하는 Operator(Sequence Operator)를 정리해보겠다. min and max Example let publisher = [1,-45,3,45,100].publisher publisher .max() .sink { print($0) } Output 100 publisher가 finish될 때까지 기다리고 이 후 연산을 처리한다. 데이터 중 max(min)값을 반환한다. first and last Example let pu..

[Combine] Operator (3): Combining Operator

Combining Operator Combine에서 Operator는 Publisher를 가공해 다른 형태나 구성으로 변경해주는 역할을 한다. Upstream으로부터 전달받은 데이터를 가공하여 downstream으로 전달하는 것이다. 그 중 데이터를 추가 혹은 합성하는 Operator(Combining Operator)를 정리해볼까 한다. prepend Example let numbers = (1...5).publisher let publisher2 = (500...510).publisher numbers.prepend(100,101) .prepend(-1,-2) .prepend([45,67]) .prepend(publisher2) .sink { print($0) }Output 500 501 502 50..

[Combine] Operator (2): Filtering Operator

Filtering Operator Combine에서 Operator는 Publisher를 가공해 다른 형태나 구성으로 변경해주는 역할을 한다. Upstream으로부터 전달받은 데이터를 가공하여 downstream으로 전달하는 것이다. 그 중 데이터를 필터링해주는 Operator(Filtering Operator)를 정리해보자. filter Example let numbers = (1...20).publisher numbers.filter { $0 % 2 == 0 } .sink { print($0) }Output 2 4 6 8 10 12 14 16 18 20 조건에 통과하는 데이터들만 반환한다. removeDuplicates Example let words = "apple apple apple fruit ..

[Combine] Operator (1): Transforming Operator

Transforming Operator Combine에서 Operator는 Publisher를 가공해 다른 형태나 구성으로 변경해주는 역할을 한다. Upstream으로부터 전달받은 데이터를 가공하여 downstream으로 전달하는 것이다. 그 중 데이터의 형태(타입)를 바꿔주는 Operator(Transforming Operator) 정리해볼 것이다. collect Example ["A","B","C","D","E"].publisher.collect(3).sink { print($0) } Output ["A", "B", "C"] ["D", "E"] Input 데이터를 모아서 Array로 한번에 반환하도록 처리한다. 파라미터로 숫자를 넣어서 몇개를 하나로 묶을지도 결정할 수 있다. (default는 모든 ..

[CoreData] 기초개념 (3): Entity Relationship

Entity Relationship 해당 버튼을 누르면 Entity를 관계그래프 형태로 확인할 수 있다. 이 때 표현된 Entity 둘을 마우스를 통해 드래그를 하여 이어주면 Relationship을 설정할 수 있다. Relationship이 설정된 모습이다. 각 Entity에게 Relationship은 서로를 의미하게 된다. 데이터베이스 모델처럼 관계 타입도 설정할 수 있다. (To Many or To One) relationship도 attribute와 유사하게 사용하면 된다.

[CoreData] 기초개념 (2): Query & Sorting

데이터베이스에서 그랬듯 Coredata에서도 조건을 주어 원하는대로 데이터를 가져올 수 있다. 또한 정렬순서도 결정할 수 있다. 조건을 줄 때는 NSPredicate 객체를, 정렬을 할 때는 NSSortDescriptor를 사용한다. NSPredicate 어떻게 데이터를 필터링하고 불러올지를 결정하는 객체이다. SQL에서 쿼리문을 날리는 것과 비슷하게 쿼리문을 작성하고 요청할 수 있다. let predicate = NSPredicate(format: "title CONTAINS %@", searchText) request.predicate = predicate NSPredicate의 쿼리문을 작성하고, 거기에 넣어줄 값이 필요하다면 뒤에 작성한다. 위는 NSPredicate의 예시이다. title att..

[RxSwift] Reactive Programming & RxSwift

부스트캠프에서 만난 팀원들과 하는 스터디의 이번주 주제 중 하나는 'RxSwift를 왜 사용하는지 설명하시오.'였다. 그런데 막상 공부하려고 보니 아직 Reactive Programming에 대해서도 정확히 파악하고 있지 못함을 느꼈다. (저번에 스터디도 했는데... 더 열심히 해야겠다...🥲 ) 그래서 이번 기회에 Reactive Programming와 RxSwift의 간단한 개념, 그리고 RxSwift를 왜 사용하는지와 단점까지 차례대로 정리해볼까 한다! Reactive Programming Reactive Programming이란 비동기적 데이터 흐름과 전달에 관한 프로그래밍 패러다임이다. 이러한 Reative Programming의 핵심은 모든 것을 비동기적 데이터의 Stream으로 간주하고, 다..

[CoreData] 기초개념 (1): Entity, CRUD

CoreData란? Apple에서 제공하는 데이터관리 프레임워크로, 데이터를 유지 및 캐싱할 수 있을 뿐 아니라 Cloudkit을 사용해 여러 장치에 데이터를 동기화하는 것도 가능하다. 내부적으로 SQLite를 사용하고 있어 데이터베이스처럼 사용도 가능하지만, 정확히 말하면 데이터베이스는 아니다. SQLite에 데이터를 저장하고 관리하는 프레임워크라고 보는 편이 더 맞는 표현이다. CoreData 설정 프로젝트를 생성할때 Use CoreData를 체크해서 만들 수 있다. 프로젝트를 생성 후 확인해보면 위와 같이 데이터모델 파일이 새로 생겨있음을 알 수 있다. // MARK: - Core Data stack lazy var persistentContainer: NSPersistentContainer = {..

[Swift] UserDefaults와 Codable, NSCoding

UserDefaults 사용자의 데이터를 저장할 수 있는 영구저장소의 일종이다. plist파일로 존재하여 Key-Data 방식으로 데이터를 읽고 저장한다. Float, Int, Double, Bool, String, URL 등 Swift에서 기본적으로 제공하는 자료구조 및 NSData, NSString, NSNumber 등 NS 관련 자료구조를 저장할 수 있다. 이 외의 인스턴스에 대해서는 추가적인 처리가 필요하다. 공통유형의 객체를 쉽게 읽고 저장할 수 있지만, 하나의 파일로 관리되는만큼 그 크기가 너무 방대해지면 오버헤드가 발생할 수 있다. 따라서 일반적으로 기본적인 몇가지 설정들만 저장될 것이 권장된다. 싱글톤을 기반으로 구성되어 있기 때문에 UserDefaults.standard의 형식으로 사용한..

🍎 Apple/Swift 2022.01.01

[Xcode] Instruments란?

Instruments? Xcode에서 제공하는 성능분석 및 테스트 도구. 프로세스 및 디바이스 장치의 상태를 프로파일링 하여 성능을 자세히 분석하는 기능을 제공한다. 그 외에도 Instruments를 통해 수행 가능한 기능들은 다음과 같다. 하나 이상의 앱 또는 프로세스의 동작 검사 Wi-Fi 및 Bluetooth와 같은 기기별 기능 검사 시뮬레이터 또는 물리적 장치에서 프로파일링 수행 소스 코드의 문제 추적 앱에 대한 성능 분석 수행 누수, 버려진 메모리, 좀비와 같은 앱의 메모리 문제 찾기 전력 효율성을 높이기 위해 앱을 최적화하는 방법 식별 일반적인 시스템 수준 문제 해결 수행 기기 구성을 템플릿으로 저장 Trace document 프로파일링에 사용되는 설정 Xcode 자체에서 생성 및 저장 가능 ..

🍎 Apple/Xcode 2021.12.30