[SwiftUI] @appstorage
Language/Swift2022. 9. 8. 21:15[SwiftUI] @appstorage

@appstorage (참고) : UserDefaults의 값을 반영하고 해당 사용자 기본값의 값 변경에 대한 보기를 무효화하는 Property Wrapper 유형입니다. appstorage를 알고 싶은 거였는데, 모르는 단어 UserDefaults와 Property Wrapper가 나왔습니다. 간단하게 설명을 하고 넘어가도록 하겠습니다. UserDefaults (참고) 앱을 실행하는 동안 지속적으로 키-값 쌍을 저장하는 사용자의 기본 데이터베이스에 대한 인터페이스입니다. UserDefaults는 앱을 종료한 다음 다시 실행해도 그대로 유지되므로 앱 구성 데이터를 저장하는 데 이상적인 방법입니다. let defaults = UserDefaults.standard defaults.set(25, forKey..

[SwiftUI] preview가 뭔데요?
Language/Swift2022. 9. 8. 11:17[SwiftUI] preview가 뭔데요?

swiftUI file을 생성하게 되면 preview 함수가 만들어져 있는 것을 볼 수 있습니다. preview의 역할은 시뮬레이터를 실행시키지 않고도 화면이 어떻게 보여지는 건지 바로 확인을 할 수 있게 만들어줍니다. 동작은 어떻게 하는 지 먼저 보자면, 현재 소스 에디터에 PreviewProvider프로토콜을 준수하는 타입이 존재하는지 확인 PreviewProivder프로토콜의 필수 구현 사항인 previews 타입 프로퍼티에서 뷰 생성 액티브 스킬의 목적지로 선택한 시뮬레이터 또는 맥에 연결한 기기의 형태로 preview container 렌더링 리뷰 컨테이너를 직접 지정해 줄 경우 3번 에서 선택한 기기를 무시하고 해당 기기 형태로 렌더링 코드에서 보면 HomeView()라는 함수를 동작시키게 되..

[Swift] image asset 1x, 2x, 3x
Language/Swift2022. 9. 8. 10:48[Swift] image asset 1x, 2x, 3x

1x, 2x 그리고 3x 를 통한 이미지 조정 이미지를 사용하게 되면 나오는 point 와 pixel 에 대한 단어가 나오는데, 간단하게 설명하자면 1 pt(point) = 1 inches / 72 으로 절대적인 수치 1 px(pixel) = 사용하는 기기에서 이미지를 표현하기 위한 최소 단위로 상대적인 수치 이러한 수치들은 window, Mac 마다 다르게 됩니다. 그리고 핸드폰도 동일하게도 다르게 적용이 되는데, 아이폰4일 때에는 낮은 화소의 핸드폰이었으며 최신 기종으로 나올수록 화소가 높은 핸드폰이 되었습니다. 이러한 환경에 맞게 이미지를 사용해야하는데, 그 환경에 맞게끔 사용을 하도록 되었습니다. ... iPhone 3GS에서는 75 × 75 픽셀의 1x 이미지를 사용합니다. ... iPhone ..

[Swift] 불투명한 유형을 some으로 반환 그리고 Scene
Language/Swift2022. 9. 7. 10:00[Swift] 불투명한 유형을 some으로 반환 그리고 Scene

swiftUI를 배우기 시작하면서 some이 무엇이길래, 사용이 되는 걸까? 궁금증을 시작으로 찾아보았습니다. 특정 유형의 반환이 아닌 some 을 이용해서 유형값을 특정짓지 않아도 됩니다. 하단 예제의 함수는 사다리꼴의 기본 유형을 노출하지 않고 사다리꼴을 반환을 합니다 struct Square: Shape { var size: Int func draw() -> String { let line = String(repeating: "*", count: size) let result = Array(repeating: line, count: size) return result.joined(separator: "\n") } } func makeTrapezoid() -> some Shape { let top =..

swift compile & package 사용법
Language/Swift2022. 8. 25. 18:30swift compile & package 사용법

정확한 사용이 아닐 수 있지만 터미널 혹은 vscode를 통해서 코드를 확인하는 작업이 필요로 하게 되어서 정리를 하였습니다. 작성한 코드의 동작 테스트 원하는 대로 이루어지는 지 비교 테스트 C언어, C++을 사용하다보니 컴파일이 조금 더 익숙하기에 이와 같은 방법을 찾게 되었습니다. Compile은 소스코드를 컴퓨터가 이해할 수 있는 기계어로 변환하는 것입니다. swift에서 build하는 과정 (참고, 참고) swiftc 를 통한 compile // double.swift extension Double { var km: Double { return self * 1_000.0 } var m: Double { return self } var cm: Double { return self / 100.0 }..

swift extensions
Language/Swift2022. 8. 24. 19:23swift extensions

이미 존재하는 클래스나 구조체, 열거형 등의 객체에 새로운 기능을 추가하여 확장해주는 구문입니다. extensions의 기능을 소개를 하자면, 새로운 연산 프로퍼티를 추가할 수 있습니다. 새로운 메소드를 정의할 수 있습니다. 새로운 초기화 구문을 추가할 수 있습니다. 기존 객체를 수정하지 않고 프로토콜을 구현할 수 있습니다. extension { // 추가할 기능에 대한 구현 코드를 작성 } 연산 프로퍼티 extension Double { var km: Double { return self * 1_000.0 } var m: Double { return self } var cm: Double { return self / 100.0 } var mm: Double { return self / 1_000.0 }..

swift optional chain
Language/Swift2022. 8. 24. 16:01swift optional chain

optional 타입은 nil이 할당될 수도 있는 값을 의미합니다. struct Human { var name: String? var man: Bool = false } struct Univ { var univName: String? var student: Human? } var universityStudent: Univ? = Univ(univName: "Harvard", student: Human(name: "Bill", man: true)) if let univ = universityStudent { if let student = univ.student, let universityName = univ.univName { if let name = student.name { print("\(univers..

swift class type casting, init
Language/Swift2022. 8. 24. 11:20swift class type casting, init

클래스에는 상속이라고 해서 부모 클래스, 자식클래스 (기본 클래스, 파생 클래스 등 부르는 이름이 여러 개 입니다)를 이용해서 클래스의 특성들을 물려받을 수 있습니다. class Animal { var age: Int = 0 func glowOld() { self.age += 1 } } class Cat: Animal { var type: String = mixed func getInTheBox() { print("\(type) cat get in the box") } } let nabi: Animal = Cat() 위 코드를 보게 되면 Cat은 Animal에 포함되기 때문에 Animal 타입의 상수에 할당할 수 있습니다. 반대로 Animal이라면 Cat 자식 클래스의 타입변수나 상수에 할당할 수 없습니..

image