使用 xamarin 的本机绑定库时获取 NSinvalid 参数异常
Getting NSinvalid argument exception while consuming a native binding library for xamarin
所以我一直在尝试创建一个可以在 Xamarin Forms 中使用的 Native Binding,所以它很好,但是有一个例子我正在添加一个新的
Objective-C exception thrown. Name: NSInvalidArgumentException Reason: -[BTDropInRequest setCardholderNameSetting:]: unrecognized selector sent to instance
这是我的 ApiDefinition class
[NullAllowed, Export("cardholderNameSetting", ArgumentSemantic.Strong)]
BTFormFieldSetting CardHolderNameSetting { get; set; }
并且我在 Structs 中将 BTFormFieldSetting
定义为
[Native]
public enum BTFormFieldSetting : long
{
BTFormFieldDisabled ,
BTFormFieldOptional,
BTFormFieldRequired = 0
}
这是我的 iOS 本地等效项
@property (nonatomic, assign) BTFormFieldSetting cardholderNameSetting;
这是为 BTFormFieldSetting
定义的
typedef NS_ENUM(NSInteger, BTFormFieldSetting) {
BTFormFieldDisabled = 0,
BTFormFieldOptional,
BTFormFieldRequired
};
@interface BTDropInRequest : NSObject <NSCopying>
我已经包含了绑定库的本机框架,如果我不使用这段代码,它工作正常
任何输入将不胜感激
您正在绑定到 BTDropInRequest
的 objective-C 属性,但不 @synthesize
属性,因此它不会生成 [=34] =] 和 getter 方法。
IOW,这是 BTDropInRequest.h
中的 Obj-C 源代码:
@property (nonatomic, assign) BTFormFieldSetting cardholderNameSetting;
通常这样做时,会使用 BTDropInRequest.m
实现文件中的 @synthesize
来自动创建 setCardHolderNameSetting:
选择器,它允许您设置 属性 值
[BTDropInRequest setCardholderNameSetting:<Instance of BTFormFieldSetting>]
并创建一个 cardholderNameSetting
选择器,它允许获得 属性 值。 implementation file of BTDropInRequest
中没有这样做。如果是,您会看到:
@synthesize cardholderNameSetting;
但它不存在,因此是缺少选择器的错误。不确定如何在不更改 Obj-C 源代码的情况下解决此问题。
与任何技术无关,而是需要解决与此相关的所有依赖关系,一旦我这样做,一切都开始工作
所以我一直在尝试创建一个可以在 Xamarin Forms 中使用的 Native Binding,所以它很好,但是有一个例子我正在添加一个新的
Objective-C exception thrown. Name: NSInvalidArgumentException Reason: -[BTDropInRequest setCardholderNameSetting:]: unrecognized selector sent to instance
这是我的 ApiDefinition class
[NullAllowed, Export("cardholderNameSetting", ArgumentSemantic.Strong)]
BTFormFieldSetting CardHolderNameSetting { get; set; }
并且我在 Structs 中将 BTFormFieldSetting
定义为
[Native]
public enum BTFormFieldSetting : long
{
BTFormFieldDisabled ,
BTFormFieldOptional,
BTFormFieldRequired = 0
}
这是我的 iOS 本地等效项
@property (nonatomic, assign) BTFormFieldSetting cardholderNameSetting;
这是为 BTFormFieldSetting
typedef NS_ENUM(NSInteger, BTFormFieldSetting) {
BTFormFieldDisabled = 0,
BTFormFieldOptional,
BTFormFieldRequired
};
@interface BTDropInRequest : NSObject <NSCopying>
我已经包含了绑定库的本机框架,如果我不使用这段代码,它工作正常 任何输入将不胜感激
您正在绑定到 BTDropInRequest
的 objective-C 属性,但不 @synthesize
属性,因此它不会生成 [=34] =] 和 getter 方法。
IOW,这是 BTDropInRequest.h
中的 Obj-C 源代码:
@property (nonatomic, assign) BTFormFieldSetting cardholderNameSetting;
通常这样做时,会使用 BTDropInRequest.m
实现文件中的 @synthesize
来自动创建 setCardHolderNameSetting:
选择器,它允许您设置 属性 值
[BTDropInRequest setCardholderNameSetting:<Instance of BTFormFieldSetting>]
并创建一个 cardholderNameSetting
选择器,它允许获得 属性 值。 implementation file of BTDropInRequest
中没有这样做。如果是,您会看到:
@synthesize cardholderNameSetting;
但它不存在,因此是缺少选择器的错误。不确定如何在不更改 Obj-C 源代码的情况下解决此问题。
与任何技术无关,而是需要解决与此相关的所有依赖关系,一旦我这样做,一切都开始工作