nhanh chóng tương đương với mã tiếp theo là gì:tương đương nhanh chóng của [NSBundle bundleForClass: [tự lớp]]
[NSBundle bundleForClass:[self class]]
tôi cần nguồn lực tải từ bó thử nghiệm (dữ liệu JSON)
nhanh chóng tương đương với mã tiếp theo là gì:tương đương nhanh chóng của [NSBundle bundleForClass: [tự lớp]]
[NSBundle bundleForClass:[self class]]
tôi cần nguồn lực tải từ bó thử nghiệm (dữ liệu JSON)
Không bao giờ được sử dụng, nhưng tôi nghĩ rằng nó phải được điều này:
Swift < = 2.x
NSBundle(forClass: self.dynamicType)
Swift 3.x
Bundle(for: type(of: self))
let bundle = NSBundle(forClass:object_getClass(self))
Cá nhân tôi thích:
let bun = NSBundle(forClass: self.classForCoder)
Điều này làm việc tốt nhất cho Swift 3.1 (Xcode 8.3) – adib
Loading the xib cho dynamicType của lớp
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);
Swift 3:
Bundle(for: type(of: self))
Giải pháp doesn ' t làm việc cho các loại giá trị. Xem xét sử dụng 'init? (Mã định danh: Chuỗi)' trong đó số nhận dạng là ID nhóm của mục tiêu của bạn. Nếu bạn không muốn hardcode bundle ID, sử dụng 'Bundle (for: Foo.Bar.self)' trong đó 'Foo' - struct của bạn,' Bar' - một số lớp bên trong. –
Trong Swift 3.0, bạn có thể sử dụng:
func kZWGetBundle() -> Bundle{
return Bundle(for: AnyClass.self as! AnyClass)
}
Nó chỉ bị treo –
Câu trả lời được lựa chọn không làm việc cho tôi trong một phương pháp tĩnh của một lớp con UIView, nhưng tôi thấy điều này:
Bundle(for: self.classForCoder)
Điều này cũng hoạt động khi bạn muốn nhận được Bundle
trong một mục tiêu thử nghiệm.
Tự động hoàn tất trong phiên bản hiện tại của Xcode hoạt động như nó không biết bạn đang nói gì, nhưng nó thực sự hoạt động. –
Yanno. Tôi chỉ yêu nơi này! Cảm ơn! –
trong phiên bản 2.1: NSBundle (forClass: self) – zwebie