앱을 만들다가 CollectionViewCell에 데이터가 없을때 즉, Empty state일때 아무것도 없는 화면 보다 데이터 추가를 유도 하는 문구를 나타내는게 필요할것 같아 공부해봤습니다. 먼저 UICollectionView의 Extension에 아래 두개 메소드를 추가해줍니다. // Extension.swift import Foundation import UIKit // MARK: UICollectionView extension UICollectionView { // 1 func setEmptyMessage(_ message: String) { let messageLabel: UILabel = { let label = UILabel() label.text = message label.textCol..
GCD 공부를 하다가 아니 async는 일을 기다리지 않고 여러개 처리를 하는거고 Concurrent는 동시성인데 같은뜻 아닌가? 의문이 생겼습니다. Thread1 , Thread2 가 있다고 가정 비동기(Async) Thread1작업을 Thread2에서 하도록 시킨 후, 해당 작업이 끝나는걸 기다리지 않고 다음일을 이어 진행한다. 동기(Sync) Thread1작업을 Thread2에서 하도록 시킨 후, 해당 작업이 끝날때 까지 기다렸다가 다음일을 진행한다. Thread1, Thread2, Thread3, Thread4 가 있고 대기열(queue)에 대기중인 작업이 있다고 가정 Serial queue (직렬 큐) 큐(Queue)에 등록된 작업을 한번에 하나씩 처리합니다. 항상 순서가 보장 됩니다. Conc..
이번주에 몸이 안좋아 PCR검사를 했는데 양성이 나오고 코로나 확진 판정을 받았습니다.. 집안에서 다들 마스크 끼고 7일동안 자가격리라 너무 답답하네요 상당히 아프니 다들 코로나 항상 조심하세요 ㅠㅠ 그래도 다 나으면 슈퍼 면역자 😅 오늘은 네비게이션바에서 Back, 뒤로가기 부분에 대해 알아볼거에요! 위 상황은 A ViewController에서 버튼을 눌렀을때 다음 B ViewController로 이동하는 과정일거에요 그죠? 보여지는 사진은 B ViewController 일 거구요. 보통은 A ViewController 에서 아래 코드 입력후 진입을 하게되면 navigationController?.pushViewController(foodDetailVC, animated: true) < Back 이라는..
프로퍼티 옵저버 (Property Observers) 프로퍼티 옵저버는 프로퍼티의 값이 변경될 때 감지하고, 반응 합니다. 매번 값이 set(설정) 될때 불려지며, 새로운 값이 현재 값과 같더라도 불려집니다. 아래 위치에 프로퍼티 옵저버를 추가할 수 있습니다. 저장 프로퍼티를 정의할 때 저장 프로퍼티를 상속할 때 연산 프로퍼티를 상속할 때 서브클래스의 프로퍼티에 옵저버를 정의할 수 있습니다. 연산 프로퍼티는 setter의 값 변화를 감지할 수 있기 때문에 옵저버를 정의할 필요가 없습니다. 프로퍼티에서 아래 옵저버를 하나 또는 둘다 사용할 수 있습니다. willSet: 값이 저장되기 전에 호출됩니다. didSet: 새로운 값이 저장된 후에 바로 호출 됩니다. willSet willSet 에서, 새 프로퍼티..
Property Wrappers swift 5.1부터 추가된 기능 입니다. Property Wrapper는 프로퍼티가 저장되는 코드와 프로퍼티가 정의되는 코드를 분리하는 계층을 추가합니다. 정의 Property Wrapper를 정의 하기위해, wrappedValue 키워드의 프로퍼티가 정의되어 있는 구조체(struct), 열거형(enum), 클래스(class)를 만듭니다. 예제 아래는 구조체 TwelveOrLess에 감싸지는 값이 항상 12 이하라는걸 보장합니다. 만약 저장하는 값이 12보다 높을경우 12를 저장합니다. @propertyWrapper struct TwelveOrLess { private var number = 0 // number는 TwelveOrLess 내부에서만 사용될거기 때문에 pr..
이전에 프로퍼티에 대해 블로깅을 했었지만 복습겸 공식문서를 보고 한번더 정리해보려고 합니다. 프로퍼티 프로퍼티는 클래스, 구조체, 열거형과 관련한 값입니다. 추가로, 프로퍼티 옵저버를 정의하여 값의 변경사항을 모니터링할 수 있으며, 사용자 지정작업으로 응답할 수 있습니다. 프로퍼티 옵저버는 사용저가 정의한 저장프로퍼티와 하위 클래스가 상위클래스에서 상속받는 프로퍼티에 추가될 수 있습니다. (질문) 종류 저장 프로퍼티 (Stored Properties) - 값을 저장하고 있는 프로퍼티 ( 클래스, 구조체 ) 연산 프로퍼티 (Computed Properties) - 값을 저장하지 않고 계산 값을 반환해주는 프로퍼티 ( 클래스, 구조체, 열거형 ) 저장 프로퍼티 (Stored Properties) 값을 저장하..
앱에서 키보드를 띄운다음 키보드 외 화면을 누르면 키보드가 내려가는 기능을 알아 볼건데요. 너무 당연히 될 줄 알았던 기능이었지만, 이것도 따로 구현이 필요합니다. 그래도 생각보다 꽤 간단하니 바로 정리해 봅시다! +추가 (22.02.28) 같이 블로깅 스터디 하시는 분이 더 쉬운방법을 공유해 주셨어요 !! override func touchesBegan(_ touches: Set, with event: UIEvent?) { view.endEditing(true) } 위의 짧은 코드를 추가하면 끝!! 먼저 tap을 감지하는 메소드인 UITapGestureRecognizer(target:, action:) 를 사용해줍니다. override func viewDidLoad() { super.viewDidLoa..
푸시알림은 서버를 사용해서 푸시를 보내는 Remote Notification 기기에서 푸시를 보내는 Local Notification 가 있으며 오늘은 Local Notification 에 대해 공부해 보겠습니다. 이걸 만들어 볼거에요 구현 import 푸시를 구현하기 위해 UserNotifications 프레임워크를 import 해옵니다. import UserNotifications 알림 권한 요청 사용자에게 푸시 알림을 받을지 권한 허용 팝업을 띄워줍니다. 위 팝업은 많이 보셨을거에요. 사용자에게 알림권한을 허용받아야 알림이 가게돼요. 먼저, 허용을 받기 위해 팝업을 띄워 주는걸 구현 해보겠습니다. import UIKit import UserNotifications class NotificationV..
지난 프로퍼티 시간에 클래스/ 구조체를 잠깐 짚고 넘어갔는데요. 저도 아직 두개의 차이점이 어떤건지 긴가민가 해서 오늘은 클래스/ 구조체에 대해 공부해보려고해요! 구조체와 클래스 (Structures and Classes) 프로그램 코드를 조직화 하기 위해 일반적으로 사용되며, 구조체 및 클래스에 프로퍼티와 메소드를 정의해 기능을 추가할 수 있습니다. 어떻게 보면 같지만서도 서로 다른데 둘의 공통점과 차이점을 보겠습니다 !! 공통점 서로 다른 타입들을 하나로 묶을수있다. (이런식으로요) class VideoMode { var resolution = Resolution() var interlaced = false // Bool var frameRate = 0.0 // Double var name: Stri..
- Total
- Today
- Yesterday
- 2023년 회고
- Swift
- RIBs tutorial
- iOS error
- swift reduce
- swift protocol
- 원티드 프리온보딩
- Swift 프로그래머스
- swift (programmers)
- swift programmers
- Swift ModernRIBs
- Swift 알고리즘
- RTCCameraVideoCapturer
- CS 네트워크
- Combine: Asynchronous Programming with Swift
- swift property
- Swift inout
- removeLast()
- Swift final
- Class
- Swift joined
- Swift RIBs
- Swift 내림차순
- Swift Error Handling
- swift 고차함수
- Swift joined()
- Swift 프로퍼티
- Swift init
- ios
- Swift Leetcode
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |