8월, 2022의 게시물 표시

iOS SWIFT_VERSION is unsupported

이미지
운영 체제: macOS Monterey 12.5.1 사용 버전: Xcode 13.4.1, Swift ​ iOS SWIFT_VERSION is unsupported를 알아보겠습니다. ​ 오래된 프로젝트를 다운로드해서 실행하면 이런 문구가 나올 수 있습니다. Swift 버전이 너무 오래되어서 지원하지 않는다는 뜻인데요. 지원하는 4.0, 4.2, 5.0으로 변경합시다. ​ 프로젝트를 누르고, TARGETS를 선택합니다. 그리고 Build Settings로 갑니다. Swift Language Version을 지원하는 Swift 버전으로 변경해 주면 됩니다. ​ ​ 끝. 카테고리: iOS

Android onBackPressed deprecated

이미지
사용 언어: Kotlin 1.7.10 사용 버전: Android Studio Chipmunk 2021.2.1 Patch 2 ​ 안드로이드 onBackPressed deprecated를 알아보겠습니다. ​ 안드로이드 API 33에서는 onBackPressed가 Depreacted 되었습니다. 그 이유는 여기서 확인할 수 있습니다. ​ https://developer.android.com/guide/navigation/predictive-back-gesture Add support for the predictive back gesture이 도입되면서 그렇습니다. 뒤로 가기 동작을 통해 뒤로 가는 것을 미리 보여준다 뭐 이런 기능입니다. ​ onBackPressedCallback 또는 OnBackInvokedCallback을 써라고 하는데 이 글에서는 onBackPressedCallback을 다루겠습니다. 해당 기능을 사용하려면 AppCompat 1.6.0-alpha05(AndroidX) 버전 이상이어야 합니다. 현재 beta01까지 나왔네요.  implementation 'androidx.appcompat:appcompat:1.6.0-beta01' MainActivity의 onBackPressed에 저는 엄청 긴 코드들이 적혀있습니다. 코드는 신경 쓰지 말아 주세요. 이것을 onBackPressedCallback으로 변경해 줄 겁니다. 변수를 하나 만듭니다. 저는 backPressCallback으로 만들었고 null로 초기화합니다. 함수를 하나 만듭니다. 저는 setBackCallback으로 만들었습니다. onBackPressedDispatcher에...

iOS Json decoding to struct

이미지
운영 체제: macOS Monterey 12.5.1 사용 버전: Xcode 13.4.1, Swift ​ iOS Json decoding to struct을 알아보겠습니다. ​ API 서버에서 보통 Json 형식으로 보냅니다. 이것을 swift는 이해할 수 없습니다. 그래서 이해할 수 있는 struct로 변환해서 사용해야 합니다. 이번 시간에는 json을 struct로 변경하는 방법을 알아보겠습니다. 임시로 사용해 볼 Json을 만듭니다. Json은 Key와 Value가 존재합니다.  Key에는 글자 형식이 들어가고, Value에는 Int, Double 또는 Float, String, Bool, Json Array 값이 들어갈 수 있습니다. 위의 Json에는 Json Array 값은 사용하지 않았습니다. 밑에서 다룰 때 다시 보시게 될 겁니다. ​ 예전에는 이러한 Json을 불러오기 힘들었는데, Codable이라는 Protocol을 만들면서 쉽게 만들 수 있게 되었습니다. ​ Struct를 하나 만들어 줍니다. Json과 동일한 이름으로 변수를 만들어줍니다. 여기서 문제가 발생합니다.  7 번째 줄 Nick name의 경우 공백이 존재함으로 변수로 바로 만들 수 없습니다. 그리고 6 번째 줄 class의 경우도 이미 지정된 이름으로 바로 사용할 수 없습니다. ​ 여기서 필요한 게 CodingKeys입니다. enum을 사용하고 String과 CodingKey를 상속받습니다. case에는 같은 변수 면 그냥 변수 이름만 적고 다른 경우 24 번째 줄처럼 원래 Json 키값을 적어줍니다. 이제 준비...

글쓴이에게 캐모마일 한 잔

이미지
안녕하세요. 글쓴이 노재화 입니다. 저는 '많은 사람들에게 도움이 되었으면 좋겠다'는 생각으로 글을 씁니다. 글을 쓸 때는 정말 많은 정성과 시간이 필요합니다. 따뜻한 캐모마일 마시고 다시 힘내어 더 좋은 글로 찾아뵙겠습니다. 캐모마일 이미지를 누르시거나 QR 코드를 스캔하시면 카카오 페이로 연결됩니다. 감사합니다. If you are out of Korea. You can use PayPal for give me a cup of chamomile. https://paypal.me/StarlightLabKR?country.x=KR&locale.x=ko_KR OR Thank you.

iOS Make a selectable collection view

이미지
운영 체제: macOS Monterey 12.5 사용 버전: Xcode 13.4.1, Swift, UIKit, Storyboard ​ iOS Make a selectable collection view를 알아보겠습니다. Collection View를 눌렀을 때, 상세 페이지로 이동하는 것을 해볼 겁니다. ​ ​ 아래 글을 참조하여 collection view를 만들어 주세요. https://shwoghk14.blogspot.com/2022/08/ios-how-to-make-collection-view.html 계속 이어서 진행해 봅시다. Main.storyboard로 갑니다. 상세 페이지를 만들어야 합니다. View Controller를 추가합니다. 상세 페이지에서 무엇을 보여줄지, 항목들을 넣습니다. 저는 Image view 하나와 label 두 개를 넣었습니다. 상세 페이지를 위한 ViewController를 만들어 줍니다. File - New - File... 을 누릅니다. Cocoa Touch Class를 선택합니다. Class에는 아무 이름이나 적어줍니다. 저는 DetailViewController를 적었습니다. Subclass of에는 UIViewController를 선택합니다. Create로 만들어 줍니다. Main 스토리보드로 갑니다. DetailViewController의 Class와 StoryboardID를 적어줍니다. 저는 DetailViewController라고 적었습니다. DetailViewController.swift에 image view와 label들을 연결합니다. ...

iOS How to make a collection view

이미지
운영 체제: macOS Monterey 12.5 사용 버전: Xcode 13.4.1, Swift, UIKit, Storyboard ​ iOS How to make a collection view를 알아보겠습니다. Collection View는 Table View와 비슷하지만 다른 것은 뷰들이 바둑판처럼 모여있는 것을 만들 수 있습니다. 물론 Table View처럼 한 줄씩 만드는 것도 가능하죠. Collection View를 만들어 봅시다. ​ ​ Navigation Controller를 사용합니다. 설정 방법을 모르시면 아래 글을 참조해 주세요. https://shwoghk14.blogspot.com/2022/08/ios-how-to-use-navigation-controller.html 그 뒤, View Controller를 꾸며줍니다. collection view를 찾습니다. 추가해 줍니다. Content View에 우리가 보여줄 것들을 추가해 줍니다. Image view 하나만 넣어도 꽉 차네요. 크기를 좀 늘려줍시다. Collection View Cell을 누르고 사각형 끝을 잡아당겨 크기를 늘려줍니다. Cell 하나를 이렇게 꾸몄습니다. 이제, 이 Cell을 위한 Class를 만들어 줍니다. File - New - File... 을 눌러줍니다. Cocoa Touch Class를 만듭니다. Class에는 아무 글이나 적어줍니다. 저는 KoreanEnglishCollectionViewCell로 적었습니다. Subclass of에는 UICollectionViewCell을 선택합니다. Create로 만듭니다. 만들어...