私はSwiftに非常に慣れていない(今週始めた)ので、Objective-Cからアプリを移行しています。基本的に、Objective-Cには次のコードがあり、正常に機能します。
typedef enum : int {
MyTimeFilter1Hour = 1,
MyTimeFilter1Day = 2,
MyTimeFilter7Day = 3,
MyTimeFilter1Month = 4,
} MyTimeFilter;
...
- (void)selectFilter:(id)sender
{
self.timeFilterSelected = (MyTimeFilter)((UIButton *)sender).tag;
[self closeAnimated:YES];
}
それをスウィフトに翻訳するとき、私は次のことをしました:
enum MyTimeFilter : Int {
case OneHour = 1
case OneDay = 2
case SevenDays = 3
case OneMonth = 4
}
...
@IBAction func selectFilter(sender: AnyObject) {
self.timeFilterSelected = (sender as UIButton).tag as MyTimeFilter
self.close(true)
}
それを行うと、エラーが発生します:
「Int」は「MyTimeFilter」に変換できません
私のアプローチ(タグプロパティを使用)が最適かどうかはわかりませんが、とにかく、アプリのさまざまな場所でこの種のキャストを行う必要があります。誰かがこのエラーを取り除く方法のアイデアを持っていますか?
ありがとう!
(sender as UIButton)
、あなただけで取るためにメソッドのシグネチャを変更することができますUIButton
代わりにAnyObject
。