본문 바로가기

공부73

[스위프트] URLSession열고 데이터 받아와서 테이블뷰로 넘겨주고 테이블뷰에 데이터를 넣어서 보여주기 - 2 여기서부턴 제가 만든 파일에 있는 내용을 그대로 갖다쓰겠습니다. 앞에서나 이 블로그의 다른곳에 써놓지 않아 이해가 잘 안될수도 있습니다. 1. performRequest 함수 완성 앞서 작성한 performRequest 함수를 완성합니다. func performRequest(urlString: String) { if let url = URL(string: urlString) { let session = URLSession(configuration: .default) let task = session.dataTask(with: url) { (data, response, error) in if error != nil { print(error) } if let safeData = data { ViewContr.. 2023. 9. 24.
[스위프트] URLSession열고 데이터 받아와서 테이블뷰로 넘겨주고 테이블뷰에 데이터를 넣어서 보여주기 - 1 날씨앱을 만들어보는 중인데 정말 여기저기 삽질을 많이 했다... 나같이 고생하는 사람이 없길 바라며 적어본다. 어체는 와리가리합니다잉 참고로 이 글은 OpenWeatherAPI를 이용한 글이며 가끔 왜 없는 내용이 튀어나오지? 할수있는데 그건 이미 제가 구조체를 만들어놨거나 다른데에 선언해놓은 내용을 그대로 적어놓은것이라 써있을 수 있습니다.(그게 갑자기 튀어나온다해서 이해를 못할 부분도 아니기도 하고 설명도 간략하게 적어놓을거에요. 쭉 읽어보시면 이해될겁니다.) 1. url세션으로 데이터 받아오기 우선 NetworkManager.swift를 만들고 여기안에서 url세션을 만들어 주고 데이터를 받아오는 performRequest(urlString: String) -> Void 함수를 만든다. func p.. 2023. 9. 19.
[스위프트] tableView 일부분만 새로불러오기 tableView에서 동적으로 데이터를 추가할때 데이터가 추가될 경우 데이터를 새로고침할때 self.tableView.reloadData() 위와 같은 함수를 사용한다. 하지만 section을 여러개로 했을때 아래와 같은 함수를 쓰면 매우 좋다. reloadSections(_:with:) 이 함수같은 경우는 선택된 Section들만 새로고치는 함수로 파라미터는sections, with으로 두가지이다. sections는 IndexSet으로 범위를 넣어서 특정 범위에 해당하는 section들을 지정하고 (IndexSet의 범위를 지정할 때 한 section만 고르고 싶다면 1...1이런식으로 하면 하나만 지정할 수 있다.) with은 UITableView.RowAnimation에 해당하는 애니메이션들중에 골.. 2023. 9. 1.
[스위프트] UILabel의 폰트사이즈를 label width에 맞추기 유데미에서 안젤라 강의 중에 FlashChat을 아이폰 11에서(그 당시엔) 실행될걸 상정하고 만들었나 보다. 지금에 와서는 아이폰 14 프로가 기본으로 맞춰져 있어 실행해 보니 "..."으로 뒷부분이 잘리더라. 암튼. UILabel을 쓸 때 폰트 사이즈를 임의로 지정하고 실행해 보면 이렇게 된다 이걸 해결하기 위한 방법은 정말 간단하다. 코드 한 줄이면 된다. titleLabel.adjustsFontSizeToFitWidth = true titleLabel 객체의 adjustsFontSizeToFitWidth 속성을 true로 만들어주면 된다. 실행해 보면 정상적으로 실행이 된다. 아이폰 14프로에서 정상적으로 실행되는 것을 볼 수 있다. swift - UILabel, adjustsFontSizeToF.. 2023. 8. 28.
[스위프트] MVC 패턴 MVC패턴은 가장 기본적인 패턴입니다. 그렇다면 여기서 말하는 "패턴"이 뭔지부터 알아보자구요. 패턴은 "디자인 패턴"을 줄여서 말한것인데 디자인 패턴의 정의는 다음과 같습니다. 소프트웨어 디자인 패턴은 소프트웨어 공학의 소프트웨어 디자인에서 특정 문맥에서 공통적으로 발생하는 문제에 대해 재사용 가능한 해결책이다. 소스나 기계 코드로 바로 전환될수 있는 완성된 디자인은 아니며, 다른 상황에 맞게 사용될 수 있는 문제들을 해결하는데에 쓰이는 서술이나 템플릿이다. - 출처 : 위키백과 이를 정리하자면 일반적으로 뭔가 공통적인 특성이 보이는, 특정할수있는 케이스를 해결할때 쓰는 템플릿이다. 정도로 이해하면 되겠습니다 MVC 패턴 MVC 패턴은 사실 줄임말입니다. 별로 어려운건 아니고 Model(모델), Vie.. 2023. 8. 26.
[스위프트] 구조체(Struct)와 클래스(Class) - 공통점과 차이점 스위프트에는 다른 언어처럼 구조체와 클래스가 있다. 이 둘은 공통적인 목적을 갖고 만들어졌다. 프로그램 소스코드의 추상화를 위해 사용하며 다른 언어와는 다르게 인터페이스와 파일이 필요 없다. 참고로 스위프트의 기본 데이터 타입은 모두 구조체로 이루어져 있다. 공통점 • 프로퍼티를 정의할 수 있다. • 메서드를 정의할 수 있다. • 서브스크립트를 사용해(SomeClass.num같이) 프로퍼티에 접근할 수 있다. • 객체를 초기상태로 설정해 주는 초기화 블록 정의 가능 • 객체에 함수적 기능 추가를 위한 확장(extends) 구문을 쓸 수 있다. • 특정 형식의 함수적 표준을 제공하기 위한 프로토콜 구현할 수 있다. 차이점 구조체 • 구조체는 값타입. • 값타입이기 때문에 구조체 변수를 새로운 변수에 할당할.. 2023. 8. 16.
[스위프트] 델리게이트 패턴 (delegate) 갑자기 목디스크가 와버린 바람에 아무것도 못하고 거의 누워서 지내다 이제 좀 살만해진거 같아서 다시 글을 쓰려고합니다. 아직도 좀 저릿한데 전에 비하면 이정도면 전에비해 정말 너무너무너무너무 괜찮아진거라 행복할 정도. 암튼 각설하고, 스위프트에는 델리게이트라는 개념이 있다. 최근 계속 ios 네이티브 앱개발을 공부하고 있는데(유데미 안젤라 강의를 듣는중) 델리게이트 패턴과 api에 대한 내용이 나오게 되었다. 앞부분까지는 솔직히 좀 어려울 부분이 크게 없기도 하지만(강의를 볼때 영어 이해하랴 화면보랴 해서 좀 힘들긴 하지만) 드디어 델리게이트 패턴에 도달을 해버린것. 문제는 강의를 어떻게 꾸역꾸역 듣긴했는데 이해가 안되는 상태에서 예시를 작성하려니 죽을맛이다. 델리게이트 패턴이 뭔가 중요한건 알겠는데 뭐.. 2023. 8. 6.
[스위프트] 클로저(Closures) 스위프트에서 클로저라는 기능은 일회용 함수를 작성할 수 있는 구문이다. 작성방식은 워낙에 다양하지만 일회용으로 함수를 작성하다 보니 함수명이 필요 없어 익명함수라고 부르기도 한다. 클로저는 이미 다른 언어들에도 존재하는 기능인데, 다른 언어에서는 다음과 같이 부른다. 자바스크립트 - 익명함수 자바 - 람다함수 파이썬 - 람다함수 아마 대충 어떤 내용이 나올지 예상이 될 것이다. 원래 클로저 자체는 세 가지를 의미한다. • 전역함수 • 중첩함수 • 클로저 표현식 여기서 살펴볼 내용은 클로저 표현식에 중점을 둘 것이다. 클로저의 표현식 우선 클로저는 기본적으로 함수이기 때문에 함수의 기본적인 형태를 따르나 일회용이기 때문에 많은 부분이 생략된다. 차차 알아가 보자. //기본적인 형식 { (매개변수) -> 반.. 2023. 7. 10.
[스위프트] defer(디퍼) 스위프트에는 defer라는 구문이 있다. 앞서 얘기한 흐름 제어 구문중 하나인데 스위프트에 있는 특이한 기능중 하나이다. defer는 "연기하다"라는 뜻을 가진 단어로 이를 생각해보면 defer구문의 기능이 무엇일지 예상이 될 것이다. 바로 일부 기능을 지연시키고자 할때 쓰는 구문이다. 하지만 이는 몇초를 지정한다던가 이런게 아니다. defer는 if나 for처럼 블럭으로 작성한다. defer는 다음과 같은 특징들을 갖는다. • defer 블럭은 defer가 들어가있는 블럭에서 가장 마지막에 실행된다.(return 이후에 실행된다.) • 만약 defer블럭을 지나지 않고 return이 실행되면 defer는 실행되지 않는다. • defer블럭이 여러개가 있다면 마지막 defer블럭부터 거꾸로 실행된다. •.. 2023. 7. 10.
728x90