Как связать переменную перечисления, измененную в objc? - PullRequest
0 голосов
/ 20 декабря 2018

Я готов перенести свой проект в RAC, но возникает ошибка, когда я хочу связать изменение свойства.

#import <UIKit/UIKit.h>
@interface XBXMLoginTextField : UIView
@property (nonatomic, assign) UIKeyboardType keyboardType;
@end

В файле .m:

- (instancetype)init {
    if (self = [super init]) {

        [RACObserve(self, keyboardType) subscribeNext:^(UIKeyboardType x) {

        }];
    }
    return self;
}

Произошла ошибка -> Несовместимые типы указателей блоков отправляют 'void (^) (UIKeyboardType)' параметру типа 'void (^ _Nonnull) (id _Nullable __strong)'

Что не так с моим кодом?

1 Ответ

0 голосов
/ 20 декабря 2018

RACObserve возвращает сигнал, который запускает его целочисленное значение в виде NSNumber * в штучной упаковке, поэтому вам необходимо использовать его integerValue:

[RACObserve(self, keyboardType) subscribeNext:^(NSNumber *keyboardType) {
    NSLog(@"%ld", (long)keyboardType.integerValue);

    // Or any other user of keyboardType.integerValue, such as:
    if (keyboardType.integerValue == UIKeyboardTypeURL) {
        // Do stuff.
    }
}];
...