अपने निरीक्षण योग्य एनामों को ints के साथ सेट करने के बजाय, आप उन्हें स्ट्रिंग्स के साथ भी सेट कर सकते हैं। हालांकि ड्रॉपडाउन के रूप में काफी बेहतर नहीं है, कम से कम यह विकल्प पठनीयता के कुछ स्तर प्रदान करता है।
केवल स्विफ्ट विकल्प:
enum Shape: String {
case Rectangle = "rectangle"
case Triangle = "triangle"
case Circle = "circle"
}
var shape = Shape.Rectangle
@available(*, unavailable, message: "This property is reserved for Interface Builder. Use 'shape' instead.")
@IBInspectable var shapeName: String? {
willSet {
if let newShape = Shape(rawValue: newValue?.lowercased() ?? "") {
shape = newShape
}
}
}
यह भी संभव है कि यह उद्देश्य-सी के साथ काम करने के लिए मिल सकता है, साथ ही एक एनुइमर में इनिशियलाइज़र जोड़कर। हालाँकि, संकलक केवल आपके आईबी-केवल गुणों के लिए "अनुपलब्ध" त्रुटि को स्विफ्ट कोड में दिखाएगा।
Obj-C संगतता के साथ स्विफ्ट विकल्प:
@objc enum Shape: Int {
case None
case Rectangle
case Triangle
case Circle
init(named shapeName: String) {
switch shapeName.lowercased() {
case "rectangle": self = .Rectangle
case "triangle": self = .Triangle
case "circle": self = .Circle
default: self = .None
}
}
}
var shape = Shape.Rectangle
@available(*, unavailable, message: "This property is reserved for Interface Builder. Use 'shape' instead.")
@IBInspectable var shapeName: String? {
willSet {
if let newShape = Shape(rawValue: newValue?.lowercased() ?? "") {
shape = newShape
}
}
}