gpt4 book ai didi

swift - 接受不同数据类型的参数?

转载 作者:行者123 更新时间:2023-11-30 10:11:32 24 4
gpt4 key购买 nike

我有一个接受 [String: AnyObject]? 参数的函数

func myfunction(parameters: [String: AnyObject]?) {
// I handle everything here
}

在大多数情况下,我通常只发送 <String, AnyObject> 的字典效果很好。

如果我现在遇到问题,我尝试添加一个以字典作为值的参数。

let parameters = [
"products_in_basket": [
"id": product.Id,
"size": 12,
"colour": "red",
"quantity": 1
],
"shipping_address_id": self.currentAddress!.Id,
"shipping_option": 0,
"payment_card_id": self.currentCard!.Id
]

// All above works ok until now
myfunction(parameters: parameters) {

}

当我调用 myfunction 时,出现错误:

'NSDictionary' is not convertible to '[String : AnyObject]'; did you mean to downcast?

现在这个错误是不言自明的,但我不确定如何允许我的函数允许此数据类型并仍然使用当前的数据类型。

我在很多地方使用这个函数,并且不想为了接受不同的参数而重复完全相同的逻辑。

最佳答案

实际上你不必向下转型,你应该通过显式地为你的字典提供正确的类型来帮助编译器理解会发生什么:

let parameters: [String:AnyObject] = [
"products_in_basket": [
"id": product.Id,
"size": 12,
"colour": "red",
"quantity": 1
],
"shipping_address_id": self.currentAddress!.Id,
"shipping_option": 0,
"payment_card_id": self.currentCard!.Id
]

这样编译器就不会要求您向下转换,并且您的函数将按您的预期工作。

注意:这适用于 Swift 1.2 - 无需使用 Swift 2 显式设置类型(类型将被推断为 [String:NSObject],但它仍然可以工作)。

关于swift - 接受不同数据类型的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32767614/

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