如何绑定在 objc 中更改的枚举变量?
How to bind enumerate variable changed in objc?
我准备将我的项目迁移到 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)'
类型的参数
我的代码有什么问题?
RACObserve
returns 一个将其整数值作为盒装 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.
}
}];
我准备将我的项目迁移到 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)'
类型的参数我的代码有什么问题?
RACObserve
returns 一个将其整数值作为盒装 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.
}
}];