Ios 访问引用字典的任意类型数组的下标
关于在ANY类型的对象数组上使用下标,有很多问题,通常建议将ANY对象强制转换为变量类型,该变量类型可以使用类似的下标Ios 访问引用字典的任意类型数组的下标,ios,swift,types,any,Ios,Swift,Types,Any,关于在ANY类型的对象数组上使用下标,有很多问题,通常建议将ANY对象强制转换为变量类型,该变量类型可以使用类似的下标 if let addresses = profile["Addresses"] as? [[String: Any]] 在我的例子中,数组是一个字典数组,其形式为(paramName:value)或(NSString:Float),然而,尽管所有答案都是如此,我还是无法找出语法来告诉编译器Any对象是字典 我的原始代码生成错误: func getStringFromSort
if let addresses = profile["Addresses"] as? [[String: Any]]
在我的例子中,数组是一个字典数组,其形式为(paramName:value)或(NSString:Float),然而,尽管所有答案都是如此,我还是无法找出语法来告诉编译器Any对象是字典
我的原始代码生成错误:
func getStringFromSortedArray (sortedArray:Array<Any>) -> String{
for i in 0 ..< sortedArray.count {
if let paramName = sortedArray[i]["param"] {
//run some code
}
func getStringFromSortedArray(sortedArray:Array)->String{
对于0中的i..
我试过了
for i in 0 ..< sortedArray.count {
if let paramName = sortedArray[i]["param"] as? [[String: Any]] {
//run some code
}
0中的i的。
,
如果让SorterDarray=SorterDarray为?[[Dictionary:Any]]{
对于0中的i..
还有很多变化都没有成功
有人能给我指出正确的语法来告诉编译器Any object是一个字典吗?如果有人认为这个问题以前已经得到了回答,我会很感激你给我举一个字典数组的例子,因为我已经看过了不同设置的答案。如果我理解正确,你说的是de>sortedArray是一组字典,如
[[String:Any]]
。我相信您也在说键“param”包含一个字符串,这就是您试图从这个函数中得到的。如果这是正确的,那么您似乎非常接近,但缺少一些东西:
func getStringFromSortedArray (sortedArray:Array<Any>) -> String {
//If your sortedArray is an array of dictionaries let's cast it as such
guard let dictionaries = sortedArray as? [[String : Any]] else { return "None Found" }
for i in 0 ..< dictionaries.count {
//Now we can loop through the dictionaries, and check that "param" contains a string
if let paramName = dictionaries[i]["param"] as? String {
//Now we have a reference to "paramName" and can return it or do whatever "run some code" means
//run some code
}
}
func getStringFromSortedArray(sortedArray:Array)->String{
//如果你的Darray是一系列字典,那么让我们将其转换为字典
guard let dictionaries=sortedArray as?[[String:Any]]else{返回“未找到”}
对于0中的i..
当然,您需要自定义如果
guard
语句失败会发生什么,如果for循环完成而没有找到您要查找的值,您还必须添加有效的返回值。让我们看看第一行代码的问题:
func getStringFromSortedArray (sortedArray:Array<Any>) -> String {
现在,如果你知道更多,你应该说更多。例如,如果你知道这些字典中的所有键都是字符串,你应该这样说:
func getStringFromSortedArray (sortedArray:[[String:Any]]) -> String {
如果您知道字典中的值都是同一类型的,您也应该这样说:
func getStringFromSortedArray (sortedArray:[[String:Float]]) -> String {
当你声明某事物的类型时,要尽可能地具体。你已经走上了一条非常棘手的道路。与其试图解决这个问题,你要摆脱
任何类型。如果你有[String:Any]
几乎肯定可以转换为结构,然后[Any]
将成为该结构的一个数组,所有这些问题都将消失。任何
有时会在数据进入系统时出现,但您应该立即将其转换为实际类型。如果您传递类型为[Any]
的值,则您走错了路。您的初始数据是什么样子的?总之是“正确的”如果让SorterDarray=SorterDarray为?[[String:Any]],则语法为{
。字典的排序数组中有许多参数值,如按值排序的param1.42、param2.28、param3.22。@luk2302,这允许它进行编译,但我不明白什么是正确的。将数组向下转换为字符串或是引用浮点的字符串和any是什么意思?@user1904273[string:any]
只是你说“Dictionary”的方式。(从技术上讲,它应该是[AnyHashable:Any
],但在现实生活中,键通常是字符串,所以最好这样说。)所以“Dictionary数组”是[[String:Any]]
。
func getStringFromSortedArray (sortedArray:[[String:Any]]) -> String {
func getStringFromSortedArray (sortedArray:[[String:Float]]) -> String {