【问题标题】:Assign enum value to property in Obj-C将枚举值分配给 Obj-C 中的属性
【发布时间】:2016-05-26 00:00:13
【问题描述】:

我在 Swift 中有以下代码。我如何将其转换为 Objective-C? (是的,Swift 到 Objective-C);)

class PopAnimator: NSObject, UIViewControllerAnimatedTransitioning {

    enum PopTransitionMode: Int {
        case Present, Dismiss
    }

    var transitionMode: PopTransitionMode = .Present

}

我在 Obj-C 中尝试过以下操作,但不确定如何将值类型 PopTransitionMode 分配给我的属性。

// .h
typedef NS_ENUM(NSInteger, PopTransitionMode) {
    Present,
    Dismiss
};
@interface PopAnimator : NSObject <UIViewControllerAnimatedTransitioning>
@property (nonatomic, assign) PopTransitionMode transitionMode;
@end


// .m
@implementation PopAnimator

-(id)init {

   if (self = [super init]) {

       _transitionMode = ???

   }


   return self;
}

@end

【问题讨论】:

    标签: objective-c swift enums


    【解决方案1】:

    您可以只使用枚举值。命名更好,枚举如下:

    typedef NS_ENUM(NSInteger, PopTransitionMode) {
        PopTransitionModePresent,
        PopTransitionModeDismiss
    };
    

    像这样初始化:

    // if the initializer takes a param
    - (id)initWithTransitionMode:(PopTransitionMode)transitionMode {
        self = [self init];
        if (self) {
            _transitionMode = transitionMode;
        }
       return self;
    }
    
    // OR, if the initializer hard-codes a param
    - (id)init {
        self = [super init];
        if (self) {
            _transitionMode = PopTransitionModeDismiss;
        }
       return self;
    }
    

    【讨论】:

    • 谢谢@danh!我试图将其声明为 _transitionMode = .Dismiss 并忘记了枚举点语法在 Obj-C 中不可用。
    猜你喜欢
    • 2019-02-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-08
    • 2013-06-28
    • 1970-01-01
    • 2022-01-09
    • 2021-10-21
    • 2011-05-09
    相关资源
    最近更新 更多