Создание привязки iOS для форм Xamarin - PullRequest
0 голосов
/ 31 октября 2018

У меня есть библиотека iOS (.a и .h), которую я хотел бы использовать с моим проектом Xamarin Forms. Я безуспешно пытался использовать учебник Xamarin . Я создал проект привязок и застрял в создании AppDefinition.cs правильно (я думаю). Я не могу использовать Objective Sharpie, так как у меня нет проекта XCode для библиотеки, только .a и .h. В любом случае, всякий раз, когда я использую свою привязку, я получаю исключение, говорящее «Неопознанный селектор отправлен на экземпляр».

Ниже мой .h файл:

#import <Foundation/Foundation.h>

@interface EPM002Lib : NSObject

+(int)ReadParamsWithToken:(const NSString *)token withSerail:(NSMutableString *)serail withSSID:(NSMutableString *)ssid withPassword:(NSMutableString *)password withSensor:(NSMutableString *)sensor withKeepAlive:(int *)keepAlive;

+(int)SetParamsWithToken:(const NSString *)token withSSID:(const NSString *)ssid withPassword:(const NSString *)password withSensor:(const NSString *)sensor withKeepAlive:(int)keepAlive;

+(int)RebootWithToken:(const NSString *)token;

@end

Ниже приводится мой AppDefinition.cs

using Foundation;

namespace SensorBinding
{
    [BaseType(typeof(NSObject))]
    interface EPM002Lib
    {
        [Export("ReadParams:WithToken:withSerail:withSSID:withPassword:withSensor:withKeepAlive")]
        int ReadParams(NSString token, NSMutableString serial, NSMutableString ssid, NSMutableString password, NSMutableString sensor, int keepAlive);

        [Export("RebootWithToken:")]
        int RebootWithToken(NSString token);
    }
}

Теперь я не уверен, какой правильный синтаксис должен быть для методов ApiDefinition. Я перевел оба (ReadParams и Reboot) по-разному, но оба дают мне ту же ошибку.

Пожалуйста, дайте мне знать, если бы я мог предоставить больше информации. Любая помощь приветствуется. Спасибо:)

1 Ответ

0 голосов
/ 31 октября 2018

Ниже приводится решение:

Знак + перед методом в .h указывает, что это статический метод и должен быть аннотирован заголовком [Static] в AppDefinition.

Кроме того, каждый: в заголовке указывает параметр, а в исходной строке указывается имя параметра. Что-то вроде

[Static, Export("DoStuff:secondParam:thirdParam:")]   

Приведенный выше заголовок представляет метод DoStuff с 3 параметрами, причем два последних параметра называются secondParam и thirdParam.

using Foundation;
namespace SensorBinding
{
    [BaseType(typeof(NSObject))]
    interface EPM002Lib
    {
        [Static, Export("ReadParamsWithToken:withSerail:withSSID:withPassword:withSensor:withKeepAlive:")]
        int ReadParams(NSString token, NSMutableString serial, NSMutableString ssid, NSMutableString password, NSMutableString sensor, int keepAlive);

        [Static, Export("SetParamsWithToken:withSSID:withPassword:withSensor:withKeepAlive:")]
        int SetParams(NSString token, NSMutableString ssid, NSMutableString password, NSMutableString sensor, int keepAlive);

        [Static, Export("RebootWithToken:")]
        int Reboot(NSString token);
    }
}

Пожалуйста, не стесняйтесь поправлять меня, если я ошибаюсь. Надеюсь, это поможет, спасибо:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...