mirror of
https://github.com/morgan9e/macos-stats
synced 2026-04-15 00:34:08 +09:00
31 lines
867 B
Swift
Executable File
31 lines
867 B
Swift
Executable File
//
|
|
// NilLoadable.swift
|
|
// Mini Stats
|
|
//
|
|
// Created by Serhiy Mytrovtsiy on 29/05/2019.
|
|
// Copyright © 2019 Serhiy Mytrovtsiy. All rights reserved.
|
|
//
|
|
|
|
import Cocoa
|
|
|
|
protocol NibLoadable {
|
|
static var nibName: String? { get }
|
|
static func createFromNib(in bundle: Bundle) -> Self?
|
|
}
|
|
|
|
extension NibLoadable where Self: NSView {
|
|
|
|
static var nibName: String? {
|
|
return String(describing: Self.self)
|
|
}
|
|
|
|
static func createFromNib(in bundle: Bundle = Bundle.main) -> Self? {
|
|
guard let nibName = nibName else { return nil }
|
|
var topLevelArray: NSArray? = nil
|
|
bundle.loadNibNamed(NSNib.Name(nibName), owner: self, topLevelObjects: &topLevelArray)
|
|
guard let results = topLevelArray else { return nil }
|
|
let views = Array<Any>(results).filter { $0 is Self }
|
|
return views.last as? Self
|
|
}
|
|
}
|