gpt4 book ai didi

ios - Cordova iOS 插件中访问各种类型的参数是如何用 Swift 编写的

转载 作者:行者123 更新时间:2023-11-30 11:56:41 25 4
gpt4 key购买 nike

iOS 中的 cordova 插件的可用文档非常少,并且假设了解 Objective C(我从未学过)。它似乎还跳过了您可能需要了解的某些内容,例如 CDVinvokedUrlCommand 到底是什么,以及可以从中提取什么类型的值。

我从该类型的头文件中看到它包含一个方法 argumentAtIndex:,我推测该方法来自 Swift examples that I've seen与 swift 下标运算符交互,因为这些建议将 command.arguments[number] 作为获取参数的一种方式。但是,我在任何时候都没有看到检索除字符串之外的任何类型参数的示例(返回 StringNSString ...并且说实话,我不太确定这些类型之间的区别是什么)。据我了解,如果我得到字符串值,我可以像这样提取它们:

@objc(myStringAction:)
func myStringAction (command: CDVInvokedUrlCommand) {
let firstString = command.arguments[0] as String;
let secondString = command.arguments[1] as String;
...
}

因此,假设我正在实现另一个操作 myComplexAction ,它接收:一个整数、一个 float 、一个整数数组和一个包含字符串值的对象。如何将它们提取到适当的变量中,结果类型是什么?

最佳答案

经过一些研究、一点点学习阅读 Objective C,以及对文档记录不佳的 Cordova iOS 平台库源代码进行大量挖掘,结果发现 arguments 数组CDInvokedUrlCommand 类只是一个标准数组,它是使用标准平台 NSJSONSerialization service 从 JSON 字符串初始化的。 。因此,您可以假设该数组包含以下类型之一的条目:

  • NSStringNSNumberNSNull 用于标准基本类型。
  • 请注意,NSNumber 用于对 bool 值和数字值进行编码
  • NSArray 对于任何数组都具有相同类型的条目类型
  • NSDictionary 具有 NSString 键和相同类型的对象值条目类型。

引用 Swift,以下到标准 Swift 值类型的转换由运行时处理:

  • NSString 可以使用 as 转换为 String(对于 Swift 2 或更早版本则隐式转换)
  • NSNumber 可以使用 as? 运算符转换为任何 Swift 数字类型的可选值(如果包含的数字在目标中无法表示,则转换将失败)类型)。
  • NSNull 不会被转换,但可以使用 is 进行测试
  • NSDictionary 可以隐式转换为 [AnyHashable:Any]
  • NSArray 隐式转换为 [Any]

关于ios - Cordova iOS 插件中访问各种类型的参数是如何用 Swift 编写的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47735456/

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