在我的Swift類中,我有一個爲履行選項定義的OptionSetType。訪問Objective-C中的Swift OptionSetType
struct FulfillmentOption : OptionSetType {
let rawValue: Int
static let Pickup = FulfillmentOption(rawValue: 1 << 0)
static let Shipping = FulfillmentOption(rawValue: 1 << 1)
static let UserShipping = FulfillmentOption(rawValue: 1 << 2)
}
然後,我創建一個變量來添加/刪除和讀取選項。這按預期工作。
var options: FulfillmentOption = []
options.insert(FulfillmentOption.Pickup)
options.contains(FulfillmentOption.Pickup)
但是我需要從我的一個Objective-C類訪問options
變量。由於OptionSetType沒有在Objective-C中定義,因此該變量對於我的任何Objective-C類都是不可見的。
什麼是我最好的方式公開這個Objective-C?我應該停止使用OptionSetType嗎?
我已經考慮過創建像這樣的公共和私有變量來在兩者之間進行轉換。我不喜歡這個,但這是迄今爲止我所提出的最好的。
private var _options: FulfillmentOptions = []
private var options: UInt {
get {
// get raw value from _options
}
set {
// set raw value to _options
}
}
有沒有更好的方法來實現這個目標?我想避免編寫不必要的代碼。
你可以解決的其他方式:在Objective-C中定義'typedef NS_OPTIONS(NSInteger,FulfillmentOption){...}',這會作爲OptionSetType導入到Swift中。 (只是一個想法。) –
有趣!我沒有意識到這一點。我會試試這個,謝謝! –