awesome-ios-developer/Bundle+Extension.swift

36 lines
1.5 KiB
Swift
Raw Normal View History

2023-05-01 03:15:03 +07:00
import Foundation
private class MyClass {}
extension Bundle {
static var myClass: Bundle = {
#if DEBUG && SWIFT_PACKAGE
let bundleName = "MyClass"
let candidates = [
/* Bundle should be present here when the package is linked into an App. */
Bundle.main.resourceURL,
/* Bundle should be present here when the package is linked into a framework. */
Bundle(for: MyClass.self).resourceURL,
/* For command-line tools. */
Bundle.main.bundleURL,
/* Bundle should be present here when running previews from a different package (this is the path to "/Debug-iphonesimulator/"). */
Bundle(for: MyClass.self).resourceURL?.deletingLastPathComponent().deletingLastPathComponent(),
/* Bundle should be present here when running previews from a framework which imports framework whick imports PhoneNumberKit package (this is the path to "/Debug-iphonesimulator/"). */
Bundle(for: MyClass.self).resourceURL?.deletingLastPathComponent()
]
for candidate in candidates {
let bundlePath = candidate?.appendingPathComponent(bundleName + ".bundle")
if let bundle = bundlePath.flatMap(Bundle.init(url:)) {
return bundle
}
}
#endif
#if SWIFT_PACKAGE
return Bundle.module
#else
return Bundle(for: MyClass.self)
#endif
}()
}