스위프트 20

<스위프트 프로젝트> UILabel sizeToFit(), UIImageView에 원격 url에서 가져온 이미지 넣기

UILabel sizeToFit() : 일단 uilabel의 크기 변화는 성공했다. 근데 uiviewtable에서 셀의 크기 변화에 실패했다. uiviewtable셀의 높이 설정 방법이 몇가지 있던데 , 동적으로 설정하는 방법 있고, 정적으로가 있는데 주로 estimate 즉 어림치를 미리 설정해 놓고 정적으로 설정하는 편인거 같다. 왜냐하면 동적으로 방법이 두갠가 본거 같은데, 한개는 셀마다 설정값에 따라 정하는 것이고, 다른건 자동 제한인데, 이게 일일이 계산하다 보니 연산량이 많아진다고 카더라; 복잡하네; 동적으로 해보려다 실패해서 , 여기서 말대로 정적으로 그냥 해봤다. 사실 정적으로도 인스펙터에서 하는 방법이랑, 코드에서 하는 방법이 둘다 있는데, 인스펙터에서 도저히 안되서 그냥 포기하는 심정으..

<스위프트 프로젝트> json parsing!!, swift5 쉽게 파싱하는 방법 , quicktype

공공api 받아오기 글에서 json parsing이 안되어 다시 작성한다. 여기 영상을 보고 전체적으로 공부하는 편이 좋겠다. codable에 대해 공부하려 하는데 글을 읽으니 진짜 기본적인 것만 일단 이해 된다. 내 코드가 안되는 이유는 내 추측에 내가 선언한 값이 없을 경우 위에서는 ?? "" 으로 nil인 경우가 없게 해주는 부분이 없어서 그런가 싶다. Course에 들어가는 json 인자가 [String : Any]로 타입 캐스팅 되어 넘어가야 된다. 사실 위에의 방법은 swift2,3 objc의 방법이라고 한다. 결국 여기 까지 해서 에러 메시지를 확인했다. public struct WeatherINF : Codable{ var rnSt: Int = 0 //강수형태 var wf: String =..

<스위프트> CLGeocoder(), CLLocation(), MapView

참고 CLGeocoder()는 위도와 경도를 가져온다. CLLocation()은 ios 맵 디비에서 주소를 가져온다 함. 이게 풀 코드이다. 근데 위의 설명만으로는 이해하고 구현하기 어려워서 애플 문서를 좀 참고 했다.[https://developer.apple.com/documentation/corelocation/cllocationmanager] CLLocationManager Overview You use instances of this class to configure, start, and stop the Core Location services. A location manager object supports the following location-related activities: Tracki..

<스위프트> dispatchQueue , dispatchGroup

dispatchQueue 공식 문서 class DispatchQueue : DispatchObject dispatchQueue라는 객체는 메인 스레드나 백그라운드 스레드에서 업무를 직렬이나 병렬적으로 수행하도록 한다. 이제 큐에 업무들을 제출하는데 , 백그라운드 큐에 넣으면 시스템이 알아서 수행해준다. 그런데 각 태스크가 어떤 스레드에 의해 수행되는지는 알 수 없다함. (메인 스레드는 여기서 예외라는데, 그말은 우리가 무엇을 특정지어 수행하도록 할 수 있따는 건가?) 여기서 내가 할 수 있는건 동기적으로나, 비동기적으로 태스크가 수행되도록 할 수 있는데, 메인스레드에서는 동기적으로 하지 말라한다. 그러다 데드락에 걸릴 수 있다고. 위의 내용 밑으로 avoiding excessive thread creat..

<스위프트 프로젝트> 공공 api 받기

음 ... 왜안되지 Codable에 대해서 이해가 필요하다. 뭐 이건 나중으로 미루고 왜 시키는대로 했는데 안되는지 모르겠다. http://apis.data.go.kr/1360000/VilageFcstMsgService/getWthrSituation ?serviceKey=인증키(URL Encode)&numOfRows=10&pageNo=1 &stnId=108 이대로 했는데 안된다. 아래 처럼 뜸 This XML file does not appear to have any style information associated with it. The document tree is shown below. 인증키를 url encode하고 전체를 url encode해야되는건가? 그냥 인증키 위치에 \(key) 를 넣고..

<스위프트> 뷰컨트롤러 이동 1 : transition, present, show

뷰컨트롤러 전반에 대해서는 여기가 정말 자세한거 같다. 일단 첫 문단을 읽었는데 모르던 내용이 두개나 있다. There are two ways to display a view controller onscreen: embed it in a container view controller or present it. Container view controllers provide an app’s primary navigation, but presenting view controllers is also an important navigation tool. You use direct presentation to display a new view controller on top of the current one. Ty..

<스위프트> 메모리 관리 : weak vs unowned

글 다썼는데 지워졌다;;;하하ㅏㅇ아 간단하게 정리한다. 몇개 찾아봤는데 스위프트 다큐먼트 예시가 가장 좋은거 같다. weak은 참조하던 객체가 해제되면 nil로 세팅한다. 즉 weak은 nil이 될 수도 있는 경우에 사용한다. 예를 들면 아파트랑 세입자 같은 경우 아래 그림이 이해가 잘된다. 이제는 unowned에 대한 내용이다. unowned는 절대 nil이 되지 않을때 사용한다. 그래서 optional 타입으로 선언해도 안된다. 그래서 소비자랑 신용카드가 예시다. 신용카드는 소비자가 반드시 존재해야 생길 수 있다. 아파트는 세입자가 없어도 일단 nil로 될 수 있다는게 차이점 인듯 하다. 5일 지나니까 내가 까먹어서 제대로 이해 못한거 같아 다시 작성해 본다. [https://www.youtube.c..

<스위프트> 뷰 컨트롤러: modal, present, push back

(sans : 없이라는 뜻) 뷰컨트롤러와 화면 전환에 대한 개념들이다. 공부하다 보니 뷰 컨틀롤러 전환에 대해서 좀 공식 문서를 좀 더 자세히 읽게 되어서 새로운 글에서 정리하겠다. 1. push vs present show 는 modal을 띄우는 것이라 하고, push는 네비게이션 뷰 컨틀롤러에서 올리는 것이라 한다.?? 뭔가 더 있을거 같은데 ViewController의 view를 바꿔치기 ViewController가 다른 ViewController 호출(present) NavigationController 사용하여 화면전환(push) 화면전환용 객체 Segue 사용 1번은 메모리 오버플로우 위험이 있다는데 왜그러지? 2번은 모달로 뷰컨을 띄우는 방법이라는데 모달이 뭔지는 알겠는데 그냥 올라오는 방식..