我正在创建一个电容器插件,旨在返回用户在iOS钱包中的通行证的基本数据。默认情况下,它将返回每张卡的序列号和组织者名称,但如果您将其他密钥作为输入提供给函数,它也可以从通行证中获取其他密钥。例如,如果我有一个虚拟的通行证,在主字段中有一个键/值对,看起来像这样...
[
{key: "lastNameKey", value: input.lastName, label: "Last Name"},
{key: "firstNameKey", value: input.firstName, label: "First Name"}
]
理论上,我应该能够通过将['lastNameKey', 'firstNameKey']
作为参数传递到函数中来检索这两个值。
我的。ts文件current中的函数调用看起来像这样。。
let fieldKeys = ['primaryKey', 'sectionKey', 'expKey', 'firstNameKey', 'lastNameKey']
const wallet = WalletAccess.getWallet({fields: fieldKeys})
其中getWallet
知道它正在寻找字符串数组的输入。任何其他输入(单个字符串或任何其他值的数组)都会提供错误,因此函数肯定需要一个Array<string>
类型的参数fields
然而,在Swift方面,当我试图打印这些输入时,没有任何内容被读取。下面的行将导致一个空数组被打印到控制台。
@objc func getWallet(_ call: CAPPluginCall) {
let fieldKeys = call.getArray("fields", String.self) ?? []
print("Cap Input Params...")
print(fieldKeys)
...
为了进一步说明,my .m文件和definitions.ts文件都考虑了这个输入,所以它看起来不是一个简单的语法问题,特别是再次考虑到函数理解它需要一个Array和字符串作为输入,并且在提供其他输入时出错。
我是否误用了call.getArray()
?我尽我所能地遵循电容器文档,但解决方案却让我困惑
1条答案
按热度按时间hiz5n14c1#
事实证明,这个问题是如此恼人的修复,因为语法是好的,我只是在建设过程中出了问题。我不得不更新电容器插件本身,我已经做了;但下一步是在我测试插件的项目中运行
ionic build
。尽管插件中的print语句在没有运行build命令的情况下发生了变化,但事实证明,并不是所有的变化都内置到了我的新项目中。这解释了为什么插件知道需要一个String数组,并拒绝了没有输入的插件调用,但它仍然不知道如何处理输入。TLDR:始终记住在测试之前运行所有构建过程