Bạn có thể có chức năng tương tự bằng cách sử dụng tiện ích và enums.
Sử dụng enums cho phép bạn tránh lỗi chính tả và hưởng lợi từ tính năng tự động/tự động hoàn thành của Xcode.
Ví dụ cho UIImage:
extension UIImage {
enum ImageId: String {
// These are your images NAMES,
// as in "SpriteMonster.jpg"
case SpriteMonster, SpriteHero, BaseLandscape
}
convenience init!(id: ImageId) {
self.init(named: id.rawValue)
}
}
Cách sử dụng:
let monster = UIImage(id: .SpriteMonster) // the "SpriteMonster.jpg" image
Ví dụ này Tôi cưỡng unwrapping init thuận tiện, vì vậy hãy cẩn thận để thực sự có hình ảnh với tên chính xác trong gói của bạn.
Đối với String:
extension String {
enum StringId: String {
case Welcome = "Welcome to the game!"
case GameOver = "You loose! Game over!"
}
init(id: StringId) {
self = id.rawValue
}
}
Cách sử dụng:
let label = String(id: .Welcome) // "Welcome to the game!"
Đối với phông chữ:
extension UIFont {
enum FontId {
case HelveticaNeueLarge
case HelveticaNeueMedium
case HelveticaNeueSmall
func font() -> UIFont {
switch self {
case .HelveticaNeueLarge:
return UIFont(name: "HelveticaNeue", size: 18)!
case .HelveticaNeueSmall:
return UIFont(name: "HelveticaNeue", size: 12)!
default:
return UIFont(name: "HelveticaNeue", size: 14)!
}
}
}
class func get(id: FontId) -> UIFont {
return id.font()
}
}
Cách sử dụng:
let font = UIFont.get(.HelveticaNeueLarge) // <UICTFont: 0x7ffd38f09180> font-family: "Helvetica Neue"; font-weight: normal; font-style: normal; font-size: 18.00pt
Đây chỉ là những ví dụ để chứng minh khái niệm, bạn có thể tiến xa hơn với điều này.
Nó trông chắc chắn những gì tôi muốn! Nhưng chỉ hỗ trợ chuỗi, hình ảnh, màu sắc. Dù sao tôi sẽ thử nó. –
Có, tôi nghĩ rằng các chuỗi, hình ảnh và màu sắc nên là các tài nguyên phổ biến nhất. –
Nhưng tôi dự định làm cho nó hỗ trợ id (reuseidentifier, segue), bố trí (nib), bool, dimen và số nguyên sau! Tôi thực sự hy vọng plugin này sẽ hữu ích. –