UIKit/기본10 아이튠즈 API를 통해 영화 정보 얻어오기 순서랑 코드만 간단히 적어본다. https://leral123-it.tistory.com/entry/%EA%B3%B5%EA%B3%B5-API%EB%A5%BC-%EC%96%B4%EB%96%BB%EA%B2%8C-%EA%B0%96%EA%B3%A0-%EC%98%A4%EB%82%98-%EA%B3%B5%EA%B3%B5-API%EB%A5%BC-GET-%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95 공공 API를 어떻게 갖고 오나? (공공 API를 GET 하는 방법)먼저 스위프트로 API를 갖고 오는 코드 구현 URL 구조체 생성 URL은 옵셔널 바인딩 처리를 해야 한다. 주소는 아이튠즈 API 갖고 왔다. https://developer.apple.com/library/archive/documen.. 2024. 4. 26. 서치바로 원하는 검색어에 맞춰 공공 API 정보 얻어오기 매인이 되는 ViewController파일 내에 서치컨트롤러 인스턴스를 생성한다. 서치바 설정 관련된 함수를 선언한다. // MARK: - 서치 컨트롤러 생성 let searchController = UISearchController() // 서치바 셋팅 func setupSearchBar() { navigationItem.searchController = searchController // 🟥 단순 서치바 사용 searchController.searchBar.delegate = self // 대문자 생성 방지 searchController.searchBar.autocapitalizationType = .none } // MARK: - 네트워크 매니저 선언 (싱글톤) var networkManager =.. 2024. 4. 20. 공공 API를 어떻게 갖고 오나? (공공 API를 GET 하는 방법) 먼저 스위프트로 API를 갖고 오는 코드 구현 URL 구조체 생성 URL은 옵셔널 바인딩 처리를 해야 한다. 주소는 아이튠즈 API 갖고 왔다. https://developer.apple.com/library/archive/documentation/AudioVideo/Conceptual/iTuneSearchAPI/Searching.html#//apple_ref/doc/uid/TP40017632-CH5-SW1 iTunes Search API: Constructing Searches developer.apple.com guard let url = URL(string: "https://itunes.apple.com/search?&term=jazz") else { print("Error: cannot creat.. 2024. 4. 9. Filemanager로 CRUD 해보기 Filemanager 사용해보기 먼저 위치를 확인한다. 아래 코드를 실행하면 콘솔창에 주소가 하나 뜬다. 그걸 터미널에 열어서 open 주소라고 치면 어떤 폴더가 나온다. 이 폴더가 바로 앞으로 작업할 폴더 이다. override func viewDidLoad() { ... let manager = FileManager.default guard let url = manager.urls( for: .documentDirectory, in: .userDomainMask).first else { return } print(url.path) } 작업을 저장할 폴더 만들기 만들 때 먼저 해야하는 것이 바로 "경로 설정"이다. 여기서는 newFolderUrl 이라는 변수에 url (위에서 만든 변수) 변수로 설정된.. 2024. 4. 4. 네비게이션 바 + 탭 바 적용 SceneDelegate.swift 파일 내 아래 코드 적용 // 첫화면이 뜨기전에, 탭바를 내장시키기⭐️⭐️⭐️ func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { guard let windowScene = (scene as? UIWindowScene) else { return } window = UIWindow(windowScene: windowScene) // 탭바컨트롤러의 생성 let tabBarVC = UITabBarController() // 첫번째 화면은 네비게이션컨트롤러로 만들기 (기본루트뷰 설정) let vc1 = UIN.. 2024. 3. 29. Drawing Cycle (+ Layout Cycle) View Drawing Cycle view가 로드 또는 변경이 있을 때, 화면에 그려지는 사이클을 말한다. ⭐ 아래 순서로 drawing이 일어난다 (Constraints -> Layout -> Draw) Constraints: 오토레이아웃 업데이트 (제약을 업데이트) Layout: 하위뷰의 레이아웃으로 위치&크기 (재)조정 Draw: 실제 내부 컨텐츠 (다시) 그리기 ⭐1초에 60번씩 아래 메서드(함수)들이 자동 호출 된다. updateConstraints (오토레이아웃이 업데이트 과정) 현재 기기의 화면 크기를 기준으로 제약을 업데이트하는 과정이다. 동적인 오토레이아웃 변경이 일어날 경우 제약조건을 변경한다. ✅ 제약을 함수로 업데이트하고, 여러 개의 제약을 한 번에 업데이트 하는 상황이 아니라면 잘.. 2024. 3. 28. 앱의 생명주기 (App Life Cycle) 앱의 생명 주기 (App Life Cycle) 앱의 생명 주기는 포그라운드 또는 백그라운드 상태에 있을 때 앱의 실행 & 종료를 시스템 이벤트 의해 앱의 상태가 전환되는 과정을 말한다. 예를 들어 사파리로 웹 검색을 하다가 전화가 와서 받으면화면의 상태가 전화기 모드로 넘어가고, 사파리 웹은 사라지는 전환을 정의한 것이다. 앱의 상태 현재 앱이 언제든지 수행 가능 또는 불가능한 작업을 결정한다. NotRunning 앱이 아직 실행되지 않았거나, 완전히 종료되어 동작하지 않는 상태 Foreground - Inactive Inactive는 앱이 실행중이지만 사용자로부터 이벤트를 받을 수 없는 상태이다. 멀티태스킹 윈도우로 진입하거나 앱 실행중 전화, 알림 등에 의해 앱을 사용할 수 없게 되는 경우 이 상태로.. 2024. 3. 27. ViewController의 life cycle ViewController의 life cycle 이란? 각각의 ViewController이 "보이고, 사라지는 주기"를 말한다. 보통은 생명주기라고 하는데, 이를 잘 사용하면 화면을 구성 또는 재구성할 때 유용하게 쓰인다. Appearing 상태 (나타나기 직전)에서 Appeared 상태 (나타남)으로 진행되고, 만약에 View가 종료된다면 Disappearing 상태 (사라지기 직전)에서 Disappeared 상태(사라짐)로 진행된다. ViewController 상태변화에 따른 메서드 종류 View의 각 상태 변화에 따른 메서드가 존재하고, 이를 이용하여 화면을 구성한다. loadView: 뷰를 메모리에 올리는 과정을 말하는데, 뷰를 바꿀 수 있는 시점이다. 각 뷰컨트롤러에는 기본적으로 갖고 있는 뷰가.. 2024. 3. 27. 컴플리션 핸들러 - 비동기 처리 (함수가 끝난 후 결과 알려줄 때) 컴플리션 핸들러 (Completion Handler) 이란? 어떠한 작업이 완료된 이후에 진행되는 작업을 담당한다. ▶️ 작업이 끝나면 "return" 키워드를 통해 전달하는 게 아니라 클로저로 전달해야 한다. (return: 비동기 작업을 기다리지 않고, 바로 반환하기 때문에 "nil" 이 나온다.)◀️ ▶️ 클로저는 주로 비동기 작업에 많이 사용된다. 그래서 비동기적인 어떠한 태스크가 끝나고 나서 수행해야 할 블록을 클로저로 작성하면 편리하다. ◀️ 컴플리션 핸들러는 어떻게 사용하나? doSomething 메서드 내부에 DispatchQueue를 통해 print() 메서드 동작에 딜레이를 적용했다. (딜레이를 적용하여 비동기 상황을 재연함) import UIKit class ViewController.. 2024. 3. 19. Delegate Pattern (델리게이트 패턴) Delegate Pattern 이란? "객체가 자신의 책임을 다른 객체에게 위임(delegate)하는 디자인 패턴"을 의미한다. 예를 들어, 테이블뷰 또는 컬렉션 뷰를 사용할 때 어떤 액션을 취할지에 대한 책임을 뷰컨트롤러에게 UITableViewDelegate 또는 UICollectionViewDelegate를 사용하여 위임한다. 그럼 왜 굳이 "위임"이라는 것을 사용하는 것일까? 애플이 미리 구현해 놓은 UITableView 또는 UICollectionView 등의 내부 코드는 비공개이기 때문에 개발자가 이를 알 수 없고, 그렇기에 수정할 수도 없다. 위에서 예를 든 테이블의 셀을 탭했을때, 상황에 맞는 리액션을 개발자가 코드로 작성해야 한다. 하지만 개발자는 애플이 구현해 놓은 내부 코드를 수정할 .. 2024. 3. 18. 이전 1 다음