분류 전체보기 333

Combine 프로젝트 만들기 순서

Combine 프로젝트 만들기 순서 1. Todos, Posts 모델 생성 1) Yarc(chrome-extension://ehafadccdcdedbhcbddihehiodgcddpl/index.html)에서 http://www.abc.com/123 이런식으로 url 넣고 GET 시도 -> response(응답값)을 복사. 2) QuickType(https://app.quicktype.io/) 에서 모델 생성 2. APIService 만들기 3. 위에서 만든 APISerivce를 ViewModel에서 구독 (sink) Combine은 구독(sink)을 통해야 이벤트가 들어오게 된다. import Foundation import Combine class ViewModel: ObservableObject { ..

SwiftUI) 간단한 테이블뷰 만들기

import SwiftUI struct ContentView: View { var body: some View { NavigationView { List(posts) { post in Text(post.title) } .navigationTitle("H4X0R News") } } } struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() } } struct Post: Identifiable { //Identifiable: 순서 인식 가능하게 함 let id: String let title: String } let posts = [ Post(id: "1", title: "Hello"), Post..

비동기, 동기

* 비동기 방식으로 작동하는 상황들 - 네트워크 요청하여 데이터 받아오기 - 파일 읽기/ 쓰기 - 데이터베이스 쓰기 * 비동기 코드 앞에 await 붙이고, 해당 코드가 속한 함수에 async를 넣어주면 비동기 방식의 코드를 동기 방식으로 실행할 수 있다. Future getName() async { String name = await HTTP요청; return name; } (비동기 방식으로 네트워크에서 값을 긁어와서 UI로 화면에 띄워주고 싶을 때 주로 이렇게 한다) (네트워크에서 값을 가져올 때까지 기다렸다가 화면에 띄워줘야 되니깐) async 가 선언된 함수의 반환 값은 Future 형식으로 표현. await를 해야만 String을 Future(미래)에 반환할거야. 출처) 스파르타코딩클럽 강의자료..

setState vs. ChangeNotifier, notifiyListeners

setState vs. ChangeNotifier, notifiyListeners setState - 전체 build 를 새로 그린다. vs. ChangeNotifier, notifiyListeners : Consumer 하단 부분만 다시 그린다. (build 처음부터 다시 다 그리는게 아님) class _HomePageState extends State { @override Widget build(BuildContext context) { return Consumer( builder: (context, memoService, child) { // memoService로 부터 memoList 가져오기 List memoList = memoService.memoList; return Scaffold( app..