FileDocument
·
SwiftUI
FileDocument는 파일을 오가는 document를 직렬화 하는데 사용하는 프로토콜입니다. 문서를 구조와 같은 값 유형으로 저장하려면 FileDocument 프로토콜을 준수하는 유형을 만들고 필요한 메서드와 프로퍼티를 구현합니다. 프로토콜을 준수하기 위해서는 readableContentTypes을 정의하여 document를 읽고 쓸 수 있는 콘텐츠 유형을 list로 설정할 수 있습니다. 만약 읽어오는 타입과 문서가 쓸 수 있는 콘텐츠 유형 목록이 읽는 것과 다르다면, 선택적으로 writableContentTypes를 정의할 수도 있습니다. init(configuration:)을 사용하여 파일로부터 document를 불러옵니다.문서를 파일에 저장하는 것은 해당 문서의 내용을 fileWrapper(co..
Files and Directories - 파일 디렉터리 접근
·
SwiftUI
애플은 앱마다 각각의 저장 공간을 갖게하여 다른 앱과의 충돌을 방지시킨다. 이것은 A라는 앱은 A 앱에 할당된 파일들과 디렉터리에 접근할 수 있는 것이다, 사용자가 앱을 설치하였을 때 시스템은 표준 디렉터리들을 만들고 그 디렉터리에 파일들을 저장한다.가장 유용한 디렉터리는 document directory다. document directory는 사용자의 파일과 파일 지원 디렉터리를 저장할 수 있는 곳이다. 디렉터리의 위치는 보장되지 않기 때문에 항상 시스템한테 현재 디렉터리나 파일을 가르키는 URL을 물어봐야한다. FileManager 클래스는 urls() 메서드를 가지고 있으며 2가지 인자값을 받는다. 다음과 같다.// 사용자의 문서 경로let documentPath: URL = fileManager...
Button
·
SwiftUI
특정 동작을 수행할 수 있는 버튼을 만들 때 사용합니다. action과 label이 있는 버튼을 만들어서 버튼을 탭 또는 클릭했을 경우 action을 수행할 수 있는 코드를 만들 수 있습니다. label을 사용하면 버튼이 어떤 동작을 수행하는지에 대해 묘사할 수 있습니다. 예를 들어 다음 코드처럼 "Sign In"이라는 버튼을 만들 수 있습니다Button(action: signIn) { Text("Sign In")} 또는 Lable view를 사용하여 제목과 아이콘을 동시에 유저한테 보여줄 수 있습니다.Button(action: signIn) { Label("Sign In", systemImage: "arrow.up")} 흔히 사용되는 것으로 클로저를 통해서 설정하지 않고 Button의 첫번째..
wrappedValue, projectedValue
·
SwiftUI
@State 프로퍼티 래퍼를 정의한 구조체는 State 라고 부른다. 이것은 generic 구조체로 어떤 타입이든 받을 수 있다. wrappedValue 와 projectedValue 프로퍼티들은 @State 값을 저장하기 위해 이 State 구조체에 의해 정의된 속성입니다. wrappedValue 프로퍼티는 state 프로퍼티에 값을 저장한 값 즉 프로퍼티 래퍼로 감싼 프로퍼티가 실제로 저장하는 값입니다.struct PlayButton: View { @State private var isPlaying: Bool = false var body: some View { Button(isPlaying ? "Pause" : "Play") { isPlaying.toggl..
property wrapper
·
SwiftUI
@Published, @Binding, @ObservedObject, @State 같은 애들이 Property Wrapper 프로퍼티 래퍼입니다.Property Wrapper 를 사용하는 이유는 특정 기능을 동작하게 하는데 좀 더 간단하게 코드를 짤 수 있도록 도와주고 코드의 중복을 없애 간결하게 만들어주기 때문입니다. 아래 예제 코드로 Property Wrapper 를 사용하기 전과 후의 차이를 봐서 얼마나 간결해졌는지 확인할 수 있습니다. width 와 height 는 값을 가져올 때 width 와 height 값과 10을 비교해서 작은 값을 반환하는 코드인데 로직이 중복되는 것을 확인할 수 있습니다.struct Rectangle { private var _width: Int private..
Property, Method
·
SwiftUI
property 는 속성이라면 method 는 행동이다. list.push(1) 처럼 괄호로 끝나면 method, list.count 처럼 없으면 property 라고 할 수 있다. 구조체와 클래스에서는 var 또는 let 을 정의하여 내부적인 값을 저장할 수 있습니다. 이렇게 구조체와 클래스 내부에서 정의된 var 또는 let 을 프로퍼티(Property), 또는 속성이라고 합니다. 함수를 정의하여 특정 기능을 정의할 수 있는데 이를 메서드(Method)라고 합니다.프로퍼티(Property)와  메서드(Method)의 차이는 구조체나 클래스 내부에 정의된다는 것만 차이가 있을 뿐, 일반 변수/상수/함수를 정의하는 것과 문법적으로 동일합니다. 다음은 구조체와 클래스를 정의하고 여기에 프로퍼티와 메서드를 ..
ytw_developer
IT Document