SwiftでmacOSのバージョン情報を取得するコードは下記です
let osVersion = ProcessInfo.processInfo.operatingSystemVersion print(osVersion)
NSOperatingSystemVersionというのが返るようで
majorVersion, minorVersion, patchVersionがInt型で入っています
Apple社 macOSについて
SwiftでmacOSのバージョン情報を取得するコードは下記です
let osVersion = ProcessInfo.processInfo.operatingSystemVersion print(osVersion)
NSOperatingSystemVersionというのが返るようで
majorVersion, minorVersion, patchVersionがInt型で入っています
Swiftで特定の文字列からランダムにパスワード作る方法
let passLen: Int = 13 let charactersSource:String = "abcdefghijklmnopqrstuvwxyz#$%&_ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890" let randomPasswd = String((0..<passLen).compactMap{ _ in charactersSource.randomElement() }) print(randomPasswd)
charactersSourceの中からランダムで、passLen:Int桁分文字を取り出します
「qF7ahwAQkYhcG」このような文字がrandomPasswdに入ります
Xcode 12.3でmacOSアプリのプロジェクトをSwiftUIで作成した場合、windowをClose()してしまうとmakeKeyAndOrderFront()が機能しませんでした。makeKeyAndOrderFrontは、ウィンドウを表示させるメソッドでNSWindowに入っています。
macOSアプリ内でウィンドウを閉じた場合再表示できない原因は、NSWindowControllerで所有していないwindowは、ウィンドウが閉じられると解放してしまうためでした。
これらを回避してmakeKeyAndOrderFrontを機能させる方法の一つは、windowを閉じない処理を入れた[NSWindowをラップしたクラス]を作ってclose()をoverrideする。
class Window: NSWindow { override func close() { self.orderOut(NSApp) } }
別の方法としては、SwiftUIでアプリ作成の場合ObservableObject継承したクラスを作成すると思うので、そのクラス内にでもNSWindowControllerを入れてしまう。
windowController = NSWindowController(window: window)
NSWindowControllerのinitはpublic init(window: NSWindow?)があるのでそこにAppDelegateなどで作ったwindowを入れます。
この2つの方法どちらかでmakeKeyAndOrderFrontが機能し閉じてもウィンドウが再表示されました。