iOS/iOS Swift Udemy - AngelaYu 28

Sec13 152) 함수 리팩토링 (computed property)

Udemy Angela Yu 강의 내용 중 -- computed property var aProperty: Int { return 2+5 } 결국 aProperty는 2+5와 같음. 응용: Clima 프로젝트 중 struct WeatherModel { let conditionId: Int let cityName: String let temperature: Double //소수점 한자리까지만 표시 var temperatureString: String { return String(format: "%1f", temperature) } } WeatherManager.swift 파일 내에서 let weather = WeatherModel(conditionId: id, cityName: name, temperatu..

Sec13 149) Networking - URL Session

Your App -----------> Web Server Request (API 규약에 의해) Query(i.e. city name) 로서 보낸다 Void) // 4. Start the task task.resume() } } completionHandler 안에는 함수가 들어간다. ( ) 괄호가 있고 Void라는 반환값을 가지는 것에서 함수라는 것을 알 수 있다. data를 서버로부터 받아오는 동안 앱은 가만히 있을 수 없기 때문에 그동안 completionHanlder 부분을 수행한다. (completion 되면 그에따라 이 함수가 실행됨) safe data인 경우에만 dataString 으로 print가 됨. let task = ~~ 부분이 실행될 때, task가 trigger되어 handle()..

Section13. 145) Protocol

Section13. 145) Protocol 17분 12초 Protocol class Bird ->Eagles :CanFly ->Penguins struct Airplane :CanFly Protocol: 마치 자격증과 같은거. Bird - layEggs(), .... 안에 함수가 여러개 있으나 이걸 Penguins이 그대로 상속받을 경우 날지 못하는데 fly함수까지 받아버리므로... 이런 경우 penguins 의 기능에 해당하는 함수들을 Bird안에 구현해서 CanFly는 따로 프로토콜로 채택해주는 식으로.

Section13 144) UITextField keyboard "go"클릭시 실행

Section13 144) UITextField keyboard "go"클릭시 무언가를 실행하고 싶다면??? UITextFieldDelegate 연결 (UITextFieldDelegate) viewDidLoad에서 searchTextField.delegate = self 의 의미? textfield가 여기에서 일어나는 일을 ViewController에 보고한다. ex) 사용자가 탭을 했어 , 무언가를 지우고 있어 등등 위의 self는 VC를 의미함. keyboard "go"클릭시 실행 go 클릭시 또는 searchButton 클릭시 keyboard 내리기 searchTextField.endEditing(true) Delegate is being notified. Delegate는 항상 노티를 받는다. T..

Section13. 143) 다크모드 및 벡터 Assets 작업.

Section13. 143) 다크모드 및 벡터 Assets 작업. 벡터이미지: 확대하면 픽셀화 되지 않는다. 수학적으로 각각의 위치를 계산하기 때문에. 아무리 확대해도 항상 선명하게 유지된다. 벡터이미지 사용시 -> 1x,2x,3x 사용할 필요 없어짐. light_background.pdf를 Assets로 드래그 & 드롭. 벡터이미지로 활용할 것이므로 오른쪽에 Preserve Vector Data 체크표시 & 밑에 scales 를 individual scales (1x, 2x, 3x) -> Single scale로 바꾸기 그러면 아래처럼 바뀜. 그리고 다크모드 지원하고 싶은 경우 오른쪽에서 Appearances: Any,light,dark로 바꾸면 됨.

Section19 247) searchbar에서 검색 취소 클릭시 키보드 내리기

searchbar에서 검색 취소 클릭시 키보드 내리기 func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) { //검색을 하다가 (text did change), searchbar 의 텍스트가 0이되는 때 (x 버튼 클릭시), 영구 core data에 있는 모든 데이터를 불러온다. if searchBar.text?.count == 0 { loadItems() DispatchQueue.main.async { searchBar.resignFirstResponder() //해당 라인은 foreground 에서 실행됨 } } } //CRUD 중에 R (READ) (Core Data) func loadItems(with request..

Section19. 252) Core Data Fundamental / CRUD

Section19. 252) Core Data Fundamental OOP World Core Data World Database World Class Entity Table Property Attribute Field 전체: Table, Class, Entity Attributes (property) Buyers Address Number Who to Invoice Walmart 702.S.W. Street, Bentonville.... 1-800-925-6278 sam@walmart.com Tesco .... Whole Foods ..... 행: NSManagedObject Table안에 들어있는 각각의 요소들은 Core Data. NSManagedObject의 예시: Item 의 title, don..

Section19. 249) CoreData

Section19. 249) CoreData 어떤 프로젝트를 만들다가, 음 프로젝트에 들어갈 데이터가 그다지 많지 않을거같은데? 하고서 UserDefaults로 하다가 ... 만약 데이터 양이 많이 들어가야되는구나 라고 깨닫게 되는 순간, 해당 프로젝트에서 처음부터 CoreData 체크표시 안했더라도 중간과정에서도 CoreData를 추가할 수 있다. 다음과 같은 방법으로 .. cmd+N 을 눌러 새로운 파일 생성하는 식으로 아래를 연다. 그리고 Data Model을 선택한다. 그리고 동시에, 현재 작업하고 있던 프로젝트 외에 새로운 프로젝트를 Core Data 를 체크한 상태로 생성한다. 거기에서 AppDelegate.swift 를 연 다음, 아래 부분을 복사해서 원래의 프로젝트 AppDelegate.s..

Section19. 248) 데이터베이스 소개

Method Use UserDefaults Quickly persist small bits of data e.g. top score, player nickname, music on/off Codable Flash freeze custom objects 마치 아이스크림을 plist로 얼렸다가 먹고싶을 때 꺼내먹는 느낌 Keychain Save small bits of data securely SQLite Persist large amounts of data and query it. Core Data Object-oriented database Realm (오픈소스 프레임워크) A faster and easier database solution. (coredata 보다 빠르다). 장치에서 데이터를 로컬로 유지

Section19. 246) NSCoder로 데이터 인코딩/디코딩(save & load)

Section19. 246) NSCoder로 데이터 인코딩/디코딩하기 iOS sandbox 방식을 이용해서 Documents에 많은 정보를 저장하고 불러오는 방식. 즉, documents -> Info.plist에 저장하는 방식으로 하는 방법임 (사용자 커스텀 및 다양, 많은 정보 저장할 때 이용하는 방법 중 하나) - NSCoder. (UserDefaults로는 소소한 정보만을 저장할 뿐 사용자 커스텀 등 방대한 정보를 저장하지는 말자.) 데이터를 인코딩한다? = 본질적으로 한 데이터 유형을 다른 데이터유형으로 변환하는 것. ex) 음악 -> Encoder -> 비닐디스크 ex) 비닐디스크 -> Decoder -> 음악 func saveItems() => 사용자 정의 개체의 배열을 plist에 쓸 수 ..