【问题标题】:Worklight Adapter Call in IOS Native Passing JSON ParameterIOS 原生传递 JSON 参数中的 Worklight 适配器调用
【发布时间】:2015-05-13 07:48:03
【问题描述】:

在 JavaScript 中使用 JSON.parse(parameter-value) 时,适配器调用工作正常,但是在本机 iOS 应用程序中执行类似操作时,它会失败并出现以下错误。

Javascript 适配器调用:

var invocationData = {
    adapter : 'TEST_ADAP',
    procedure : 'PROC1',
    parameters : [JSON.parse(A)],
};

本地调用:

json= // some json value will be come
 MyConnect *connectListener = [[MyConnect alloc] initWithController:self];
    [[WLClient sharedInstance] wlConnectWithDelegate:connectListener];
    WLProcedureInvocationData *myInvocationData = [[WLProcedureInvocationData alloc] initWithAdapterName:@"TEST" procedureName:@"test"];

    myInvocationData.parameters = [NSArray arrayWithObjects:json, nil];

    for (NSString *str in myInvocationData.parameters) {
        NSLog(@"values of account test %@",str);

    }
    PasswardPage *invokeListener = [[PasswardPage alloc] initWithController:self];
    [[WLClient sharedInstance] invokeProcedure:myInvocationData withDelegate:invokeListener];

【问题讨论】:

  • 错误在哪里?还要提到本机部分中的“json”到底是什么。提供一个实际的例子。
  • 我得到了这种格式的 json {test = 21321312}, {test=231312},我怎样才能改变正常格式?
  • 我不懂你。提供错误。提供完整代码。
  • 我需要这种格式 {test : 12345},{test2 : 232323}
  • 你需要发送一个字符串数组。参数是一个字符串数组:www-01.ibm.com/support/knowledgecenter/SSHS8R_7.0.0/…

标签: ios objective-c ibm-mobilefirst worklight-adapters


【解决方案1】:

你的线路

myInvocationData.parameters = [NSArray arrayWithObjects:json, nil];

几乎是对的。

parameters 属性应该是 NSArray(正如您所做的那样),但数组必须由字符串值组成 - 而不是 JSON 对象。

myInvocationData.parameters = [NSArray arrayWithObjects:@"myValue1", @"myValue2", @"myValue3", nil];

如果您收到的数据不是这种格式,需要先转换成这种格式。这超出了这个问题的范围。

如果您不确定如何将现有格式转换为有效的NSArray,请打开一个新问题(标记为 Objective-C,而不是 worklight)。

【讨论】:

    【解决方案2】:

    我们可以在 iOS Native 代码中将 JSON 作为 NSString 传递来调用适配器 示例

    //Created Dictionary 
    NSMutablec *dict = [[NSMutableDictionary alloc]init];
    [dict setObject:@"xyz" forKey:@"Name"];
    [dict setObject:@"iOS" forKey:@"Platform"];
    
    //Convert it to JSON Data
    NSError *error;
    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict
                                                       options:nil
                                                         error:&error];
    //JSON Data To NSString
    
    NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
    
    WLProcedureInvocationData * invocationData = [[WLProcedureInvocationData alloc] initWithAdapterName:@"XYZAdapter" procedureName:@"FunctionXYZ"];
    
    //Passing jsonString (NSString Created out of JSON Data) as array to set Parameters.
    
    [invocationData setParameters:[NSArray arrayWithObject:jsonString]];
    
    [[WLClient sharedInstance] invokeProcedure:invocationData withDelegate:self];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多