Как использовать extern через методы - PullRequest
0 голосов
/ 22 мая 2019

Я надеюсь, что кто-то может помочь.

Я пишу плагин Cordova в objC для подключения к платформе IOT, которая называется gizwits.

Я пытаюсь объявить переменную extern в файле .h, затем присвоить значение в одном методе .m, а затем, наконец, вызвать это значение в другом методе. Но когда я вызываю значение в последнем методе, я всегда получаю нулевое значение.

.h файл

extern NSString *const uid;
    extern NSString *const token;

.m файл

    - (void)pushSSID:(CDVInvokedUrlCommand*)command
{

    NSString* ssid = [command.arguments objectAtIndex:0];
    NSString* key = [command.arguments objectAtIndex:1];
    NSString *const uid = [command.arguments objectAtIndex:2];
    NSString *const token= [command.arguments objectAtIndex:3];
    NSLog(@"%@", uid);//this displays my uid
    NSLog(@"%@", token); //this displays my token

обратный вызов

    -(NSString *)wifiSDK:(GizWifiSDK *)wifiSDK
    didSetDeviceOnboarding:(NSError *)result
            mac:(NSString *)mac
            did:(NSString *)did
     productKey:(NSString *)productKey {

        NSLog(@"%@", uid); // always null
        NSLog(@"%@", token); // always null

Обратный вызов всегда возвращает нуль для идентификатора пользователя и токена. Функция обратного вызова запускается только тогда, когда значение уже установлено в методе pushSSID.

Если у кого-нибудь есть предложения, я буду очень благодарен. Спасибо

1 Ответ

0 голосов
/ 22 мая 2019

Строки:

NSString *const uid = [command.arguments objectAtIndex:2];
NSString *const token= [command.arguments objectAtIndex:3];

не задают глобальные внешние переменные.Это отдельные локальные переменные.

Измените эти две строки на:

uid = [command.arguments objectAtIndex:2];
token= [command.arguments objectAtIndex:3];

Это установит значения для глобальных переменных.

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