gpt4 book ai didi

iphone - PhoneGap.exec() 在 JS 和 Obj-C 之间传递对象

转载 作者:行者123 更新时间:2023-12-03 19:05:06 24 4
gpt4 key购买 nike

我发现在 JS 和 Obj-C 之间传递对象的唯一方法是使用 JSON.stringify() 对 JS 对象进行编码,并将 json 字符串传递给 PhoneGap.exec

PhoneGap.exec('Alarm.update',JSON.stringify(list));

...并在 Obj-C 中重建对象:

NSString *jsonStr = [arguments objectAtIndex:0];
jsonStr = [jsonStr stringByReplacingOccurrencesOfString:@"\\\"" withString:@"\""];
jsonStr = [NSString stringWithFormat:@"[%@]",jsonStr];
NSObject *arg = [jsonStr JSONValue];

这是正确的吗?有更好/正确/官方的方法吗?

最佳答案

PhoneGap.exec 是为简单类型设计的。您的方法没问题,或者您可以只传递单个对象(仅适用于单个对象,请参阅页脚了解我们如何编码命令),并且它应该位于命令的选项字典中。然后在 Objective-C 端,使用键值编码自动用字典填充您的自定义对象。

例如MyCustomObject* blah = [MyCustomObject new];[blah setValuesForKeysWithDictionary:options];

如果您对 PhoneGap.exec 的工作原理感兴趣,请继续阅读...

* --------- *

对于 PhoneGap.exec,JavaScript 参数被编码到 URL 中。

对于 JS 命令:PhoneGap.exec('MyPlugin.command', 'foo', 'bar', 'baz', { mykey1: 'myvalue1', mykey2: 'myvalue2' });

生成的命令 URL 为:间隙://MyPlugin.myCommand/foo/bar/baz/?mykey1=myvalue1&mykey2=myvalue2

这将在 Objective-C 端进行处理和转换。 foo、bar、baz 放在arguments 数组中,查询参数放在options 字典中。它将查找名为“MyPlugin”的类,并使用参数数组和选项字典作为参数来调用选择器“myCommand”。

有关详细信息,请参阅phonegap.js、PhoneGap.run_command

关于iphone - PhoneGap.exec() 在 JS 和 Obj-C 之间传递对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3993410/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com