Swift クラス名を文字列で取得

Swift クラスの型名を文字列取得

Swift の 「クラス 変数」 の型名を 文字列で取得する方法

let s: String = "文字列"
let anser: String = String(describing: type(of: s))
print(anser)

変数 anser には 「String」という文字列が入ります。

変数 anser には 「String」という文字列が入ります

Optionalの場合

let i: Int? = 1
let anser: String = String(describing: type(of: i))
print(anser)

上↑の 変数anser には「Optional<Int>」が入りました。

クラスの場合

class TObject {}
let obj1 = TObject()
let anser: String = String(describing: type(of: obj1))
print(anser)

TObjectというクラスを作成しました。

変数 anser には 「TObject」という文字列が入りました。

型名は、 下記のように取り出すこともできます

let anser: String = String(describing: type(of: TObject.self))

もしくは

let anser: String = String(describing: TObject.Type.self)

“TObject.Type”という文字列が入りました。

macOS SwiftUI ウィンドウタイトル名を変更する

macOS SwiftUI ウィンドウタイトル名を変更

SwiftUImacOSアプリを作った場合 プロジェクト名が ウィンドウタイトルになります。

ウィンドウタイトルを 変更するには navigationTitle()を使います。

下記はコード例です

@main
struct プロジェクト名App: App {
    @State var title: String = "ウィンドウタイトル名"
    var body: some Scene {
        WindowGroup {
            ContentView().navigationTitle(title)
        }.windowStyle(.automatic)
    }
}

macOS SwiftUI DatePicker カレンダー 最大値 / 最小値 Range

macOS SwiftUI で DatePickerの 最大値と最大値をClosedRangeで指定する方法コード例です。

SwiftUIDatePickermacOSで使う 下記は シンプルなコード例

struct ContentView: View {
    @State var d1: Date = Date()
    @Binding var title: String
    var body: some View {
        ZStack{
            Color.clear.frame(width: 350, height: 200)
            VStack{
                DatePicker("日時", selection: $d1).frame(width: 300)
                Spacer().frame(height: 150)
            }
        }
    }
}
macOS DatePicker例

↓下記は、 DatePicker の最大値と最小値を設定するコード例です

struct ContentView: View {
    @State var d1: Date = Date()
    @Binding var title: String
    @State var target:Date = Date()
    var dateClosedRange: ClosedRange<Date> {
        let min = Calendar.current.date(byAdding: .day, value: -7, to: target)! //7日前
        let max = Calendar.current.date(byAdding: .day, value: 1, to: target)!  //1日後
        return min...max
    }

    var body: some View {
        ZStack{
            Color.clear.frame(width: 350, height: 200)
            VStack{
                DatePicker("日時", selection: $d1, in: dateClosedRange).frame(width: 300)
                Spacer().frame(height: 150)
            }
        }
    }
}

DatePicker の “in” に ClosedRange<Date>で最大値と最小値を指定しています。

DatePicker の "in" に ClosedRange<Date>で最大値と最小値を指定