-
Notifications
You must be signed in to change notification settings - Fork 48
/
Bundle+Extension.swift
35 lines (32 loc) · 1.46 KB
/
Bundle+Extension.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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
}()
}