所以我一直在尝试创建一个可以在Xamarin Forms中使用的本机绑定,所以很好,但是在一个实例中我正在添加新的
Objective-C异常抛出。名称:NSInvalidArgumentException原因:-[BTDropInRequest setCardholderNameSetting:]:无法识别的选择器已发送到实例
这是我的ApiDefinition类
[NullAllowed, Export("cardholderNameSetting", ArgumentSemantic.Strong)]
BTFormFieldSetting CardHolderNameSetting { get; set; }
我在结构中将BTFormFieldSetting
定义为
[Native]
public enum BTFormFieldSetting : long
{
BTFormFieldDisabled ,
BTFormFieldOptional,
BTFormFieldRequired = 0
}
这是我的iOS Native等效版本
@property (nonatomic, assign) BTFormFieldSetting cardholderNameSetting;
这是为BTFormFieldSetting
定义的
typedef NS_ENUM(NSInteger, BTFormFieldSetting) {
BTFormFieldDisabled = 0,
BTFormFieldOptional,
BTFormFieldRequired
};
@interface BTDropInRequest : NSObject <NSCopying>
我已经为绑定库提供了本机框架,如果我不使用这段代码,它就可以正常工作 任何意见将不胜感激
答案 0 :(得分:0)
您要绑定到BTDropInRequest
的Objective-C属性,而该属性不是@synthesize
的属性,因此它不会生成setter和getter方法。
IOW,这是BTDropInRequest.h
中的Obj-C源代码:
@property (nonatomic, assign) BTFormFieldSetting cardholderNameSetting;
通常,执行此操作时,将使用@synthesize
实现文件中的BTDropInRequest.m
自动创建setCardHolderNameSetting:
选择器,该选择器允许您使用
[BTDropInRequest setCardholderNameSetting:<Instance of BTFormFieldSetting>]
,还创建一个cardholderNameSetting
选择器,该选择器允许获取属性值。 implementation file of BTDropInRequest
中未完成此操作。如果是这样,您会看到:
@synthesize cardholderNameSetting;
但它不存在,因此缺少选择器的错误。不知道如何在不更改Obj-C源代码的情况下解决此问题。
答案 1 :(得分:0)
与任何技术都不相关,但是需要解决与此相关的所有依赖关系,一旦我做到了,一切就开始起作用