gpt4 book ai didi

arrays - Swift - 检查字典中是否存在数组

转载 作者:行者123 更新时间:2023-11-28 13:21:14 25 4
gpt4 key购买 nike

对于 Swift 字典中的值类型检查,我有点不知所措。我期待 String -> AnyObject 的字典,并希望在继续之前确保下标"file"处的元素是一个数组。这是代码:

extension Array {
static func ensureValueIsArray(arrayValue: AnyObject?) -> Array<AnyObject> {
if let array = arrayValue as? Array<AnyObject> {
return array
} else {
return [AnyObject]()
}
}
}

func generateModel(responseDictionary: Dictionary<String, AnyObject>) -> ResponseModel
{
var files = Array.ensureValueIsArray(responseDictionary["file"]) <---------
}

我在箭头指示的行上收到以下编译器错误:找不到接受所提供参数的“下标”的重载。

关于如何解决此错误的任何线索?

最佳答案

您必须使用泛型重写您的扩展方法:

extension Array {
static func ensureValueIsArray(arrayValue: T?) -> Array<T> {
if let array = arrayValue as? Array<T> {
return array
} else {
return [T]()
}
}
}

在 Playground 测试:

generateModel(["file": [1, 2, 3]]) // Prints "[1, 2, 3]"
generateModel(["file": 1]) // Prints "0 elements"
generateModel(["something": 1]) // Prints "0 elements"

关于arrays - Swift - 检查字典中是否存在数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25608170/

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