我希望有人能提供帮助。
我正在objC中编写一个cordova插件,以连接到名为gizwits的IOT平台。
我试图在.h文件中声明一个extern变量,然后在.m的一个方法中分配一个值,然后最终在另一个方法中调用该值。但是,当我在final方法中调用值时,我总是得到null。
.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
回调始终为uid&令牌返回null。仅当在pushSSID方法中设置了该值时,才运行回调。
如果有人有任何建议,我将非常感激。谢谢
答案 0 :(得分:0)
行:
NSString *const uid = [command.arguments objectAtIndex:2];
NSString *const token= [command.arguments objectAtIndex:3];
未设置全局外部变量。这些是单独的局部变量。
将这两行更改为:
uid = [command.arguments objectAtIndex:2];
token= [command.arguments objectAtIndex:3];
这将为全局变量设置值。