전체 글 (62) 썸네일형 리스트형 SwiftUI @Binding 알아보기 최근 SwiftUI 공부를 다시 시작하였다. 화면을 만드는 것은 UIkit보다 간결한 것 같지만 개념이 다른 부분이 달라 정리할 필요를 느꼈다..! @Binding이란? A Property wratter type that can read and write a value onwned by a source of truth @Binding 프로퍼티 래퍼는 전달받은 데이터를 읽거나 직접 변경할 수 있도록 만들어진 타입이다. 예시를 들어 @Binding을 왜 사용해야 하는지 알아보겠다. 다음과 같이 SuperView안에 SubView(버튼)을 가져다 쓴다고 가정해보자. SubView의 버튼은 SuperView의 클릭 여부에 따라서 상태가 바뀌게 될 것이다. 이때, SuperView와 SubView의 상태는 같아야.. Swift 공부) iOS Google Admob 구현해보기 ,The Google Mobile Ads SDK was initialized without AppMeasurement 에러 해결 오늘은 앞으로 진행할 프로젝트에 광고를 달아보면 어떨까하는 생각에 Google Admob으로 광고를 띄우는 방법을 알아보았다. https://developers.google.com/admob/ios/quick-start 시작하기 | iOS | Google Developers iOS 앱을 제작 중인 AdMob 게시자를 위한 모바일 광고 SDK입니다. developers.google.com 사실 공식문서 중에 정말 쉽고 간단하게 나와있기 때문에 보고 그대로 따라하면 되지만 중간에 하나의 에러를 만나서 글을 써서 다음에 참고해야겠다라는 마음으로 글을 쓰게 되었다! 1. 모바일 광고 SDK 가져오기 여기에는 2가지 방법이 있다. cocoapods, SPM 공식문서에는 cocoapods을 권장하고 있지만 SPM이.. Swift 기본 문법) 상속 알아보기 상속을 공부하는데 어려움이 항상 많았는데 좋은 포스팅이 있길래 이 글을 토대로 공부를 해보고자 한다. 클래스(Class)는 상속이 가능하며, 오직 하나의 상속만이 가능하다. 또한 메섣, 프로퍼티 등을 상속할 수 있다. Base Class(기반 클래스)란? 다른 어떤 클래스로부터도 상속받지 않은 클래스를 기반 클래스라고 한다. class Vehicle { var currentSpeed: Double = 0.0 var description: String { return "현재 속도는 \(currentSpeed)입니다. " } func makeNoise() { } } let bike = Vehicle() print(bike.description) 간단하게 Class를 만들어봤다. Vehicle이라는 Class.. swift 기본 문법) 연산 프로퍼티(get, set) 알아보기 오늘은 수업에서 다뤘던 연산 프로퍼티에 대해서 복습해보려고 한다. 우선 연산 프로퍼티의 핵심 내용은 다음과 같다. 1. 클래스, 구조체, 열거형에 사용 2. 저장 프로퍼티와 달리 저장 공간을 갖지 않는다. + 저장할 프로퍼티를 만들어야 한다. 3. 항상 var로 정의해야 한다. (다른 프로퍼티의 값을 연산, 프로퍼티로 전달받은 값을 다른 프로퍼티에 저장하기 때문에) 연산 프로퍼티 말을 이해해보면 값을 저장하지 않고 연산을 하는 프로퍼티구나 라고 짐작해볼 수 있다. 그리고 연산 프로퍼티는 값을 저장하지 않고 연산하기 때문에 어떤 타입을 연산할지 알기 위해 타입을 명시해야 한다. 추가로 연산 이라고 하면 어떤 값을 받고 다른 프로퍼티에 넘겨줄지를 알아야 한다고 짐작할 수 있다. 우선 예시를 들어서 설명하면 .. swift 기본문법) if let, guard let의 목적과 의미 알아보기 최근 수업을 들으면서 문법을 다시 공부하고 있다. 무심히 쓴 코드들에 대한 의미를 다시 한번 듣고 이해하면서 좋은 공부가 되어가고 있다. if le과 guard let은 Optional Binding과 연결되어 있는 개념이지만 추가적인 개념이 있어서 정리해보았다. Optional이란? 이 변수에는 값이 있을 수도 있고 없을 수도 있다.라는 의미이다. 개인적인 경험으로 optional이 왜 필요해볼까를 생각해 봤을 때, 앱이 네트워크 통신으로 값을 받을 때, 항상 값이 있다고 확신할 수 없다. optional을 사용하지 않고 변수를 선언하였는데 빈 값이 온다면? 해당 코드가 이니셜되었을 때 앱은 죽게 될 것이다. 이러한 이유 때문에 Optional 이 유용하게 사용되었다. 하지만 Optional로 처리를 .. Swift 고차함수) flatMap, compactMap 알아보기 CompactMap func compactMap(_ transform: (Int?) throws -> ElementOfResult?) rethrows -> [ElementOfResult] Returns an array containing the non-nil results of calling the given transformation with each element of this sequence. 해당 시퀀스의 각 요소로 지정된 변환을 호출한 nil이 아닌 결과를 포함하는 배열을 반환한다. 라는 의미를 가지고 있다. 변환하는 과정에서 옵셔널 값이 생성되는 경우 해당 메서드를 통해 옵셔널이 아닌 값들을 받을 수 있다. compactMap이 옵셔널 바인딩의 기능을 가지고 있기 때문에 가능하다. let ar.. Swift Realm 알아보기 Realm이란? 모바일에 특화된 NoSQL 데이터베이스로 Swift, Java, Kotlin 등 다양한 SDK를 무료로 제공한다. Swfit를 공부를 하면서 데이터 저장을 필요로 할 때, UserDefaults, CoreData, SQLite등이 있지만 Realm 1) 작업 속도가 빠르고 2) Cross Platform을 지원해, 안드로이드 OS와 DB 공유가 가능 3) Real Studio를 통해 DB 상태를 확인할 수 있고 4) 코드가 직관적이다. https://realm.io/realm-swift/ Realm Swift Fast, Swifty data storage realm.io Model 정의 Realm에서 저장할 데이터 객체를 정의할 떄는 class를 만들고 필요한 property를 정의한다... Swift Realm 에러 "please enter a valid encryption key for this realm file" Realm 공부를 하다 Realm Browser을 이용하면 DB를 확인할 수 있다고 해서 앱스토어에서 다운받아 보았다. https://apps.apple.com/kr/app/realm-browser/id1007457278?mt=12 Realm Browser Realm Browser is a viewer and editor for .realm data store files. It allows developers implementing Realm in their apps to easily view and debug the contents of the .realm files their apps have created. Features: - View all of the objects in a .realm f.. 이전 1 2 3 4 5 6 7 8 다음