Ces*_*sar 4 iphone json object parameter-passing cordova
我发现在JS和Obj-C之间传递对象的唯一方法是通过使用JSON.stringify()编码JS对象并将json字符串传递给PhoneGap.exec
PhoneGap.exec('Alarm.update',JSON.stringify(list));
Run Code Online (Sandbox Code Playgroud)
...并在Obj-C中重建对象:
NSString *jsonStr = [arguments objectAtIndex:0];
jsonStr = [jsonStr stringByReplacingOccurrencesOfString:@"\\\"" withString:@"\""];
jsonStr = [NSString stringWithFormat:@"[%@]",jsonStr];
NSObject *arg = [jsonStr JSONValue];
Run Code Online (Sandbox Code Playgroud)
这是正确的吗?这样做有更好/适当/官方的方式吗?
PhoneGap.exec是为简单类型设计的.你的方式是好的,交替你可以通过你的单一对象(只针对单个对象只有工作,看看我们如何当元帅的命令页脚),它应该是在选择字典的命令.然后在Objective-C的一侧,使用键 - 值编码与词典中自动填充您的自定义对象.
例如MyCustomObject*blah = [MyCustomObject new]; [blah setValuesForKeysWithDictionary:options];
如果您对PhoneGap.exec的工作原理感兴趣,请继续阅读......
*---------*
对于PhoneGap.exec,javascript参数被封送到URL中.
对于JS命令:PhoneGap.exec( 'MyPlugin.command', '富', '酒吧', '巴兹',{mykey1: 'myvalue1',mykey2: 'myvalue2'});
生成的命令url是:gap://MyPlugin.myCommand/foo/bar/baz/?mykey1 = myvalue1&mykey2 = myvalue2
这将在Objective-C方面进行处理和转换.foo,bar,baz放在arguments数组中,查询参数放在options字典中.它将查找一个名为"MyPlugin"的类,并将使用arguments数组和选项字典作为参数调用选择器"myCommand".
有关详细信息,请参阅phonegap.js,查看PhoneGap.run_command
| 归档时间: |
|
| 查看次数: |
6059 次 |
| 最近记录: |