【发布时间】:2014-09-03 18:39:34
【问题描述】:
下一个代码的 swift 等价物是什么:
[NSBundle bundleForClass:[self class]]
我需要从测试包加载资源(JSON 数据)
【问题讨论】:
标签: swift
下一个代码的 swift 等价物是什么:
[NSBundle bundleForClass:[self class]]
我需要从测试包加载资源(JSON 数据)
【问题讨论】:
标签: swift
斯威夫特 5
Bundle(for: Self.self)
【讨论】:
如果你正在上课,那么
Bundle(for: type(of: self))
有时你可能在一个结构中工作,那么你需要使用包中的任何类
Bundle(for: AnyClassInTheBundle.self)
【讨论】:
没用过,不过我觉得应该是这样的:
斯威夫特
NSBundle(forClass: self.dynamicType)
Swift 3.x
Bundle(for: type(of: self))
【讨论】:
init?(identifier: String),其中标识符是您的目标的捆绑ID。值类型的另一个解决方案是在值类型中声明一个空类。后一种解决方案的示例:Bundle(for: Foo.Bar.self) 其中Foo - 你的结构,Bar - 一些内部类。
type(of: self) 将返回 ClassName.Type 并调用 Bundle(for:) 以返回主包
斯威夫特 3:
Bundle(for: type(of: self))
【讨论】:
init?(identifier: String),其中标识符是您的目标的捆绑ID。如果您不想硬编码捆绑 ID,请使用 Bundle(for: Foo.Bar.self) 其中 Foo - 你的结构,Bar - 一些内部类。
为类的dynamicType加载xib
let bundle = NSBundle(forClass: self.dynamicType)
let nib = UINib(nibName: "CellForAlert", bundle: bundle)
let view = nib.instantiateWithOwner(self, options: nil).first as! UIView
view.frame = bounds
view.autoresizingMask = [.FlexibleWidth, .FlexibleHeight]
self.addSubview(view);
【讨论】:
在 UIView 子类的静态方法中,所选答案对我不起作用,但我发现:
Bundle(for: self.classForCoder)
当您想在测试目标中获取 Bundle 时,这也适用。
【讨论】:
我个人喜欢:
let bun = NSBundle(forClass: self.classForCoder)
【讨论】:
let bundle = NSBundle(forClass:object_getClass(self))
【讨论】:
在 Swift 3.0 中,您可以使用:
func kZWGetBundle() -> Bundle{
return Bundle(for: AnyClass.self as! AnyClass)
}
【讨论】: