将特定类型的对象添加到 Swift 中的通用数组 <Any>?
Adding objects of a specific type to a generic Array<Any> in Swift?
如何将特定类型的对象添加到泛型 Array:[Any]?我的理解是 Any 应该能够包含任何其他对象。这个对吗?不幸的是,当我将特定对象添加到通用数组时,我收到一条错误消息。
例子
"SpecificItemType"
类型的对象数组
var results:[SpecificItemType] = []
... // adding various objects to this array
这些对象的通用目标数组
var matchedResults:[Any] = []
matchedResults += results
错误信息
[Any] is not identical to UInt8
这里有什么问题?错误消息并没有真正帮助。
还有一点要注意:有趣的是,可以使用追加来添加单个对象。所以下面的作品
matchedResults.append(results.first)
首先将 Any 更改为 AnyObject 并尝试以下操作:
matchedResults += (results as [AnyObject])
编译器无法解析
上的类型约束
func +=<T, C : CollectionType where T == T>(inout lhs: ContiguousArray<T>, rhs: C)
因为您要将 [SpecificType]
添加到 [Any]
,因此 T != T
。
您可以通过向上转换最具体的数组来解决这个问题。
var r = results.map { [=11=] as Any }
matchedResults += r
关于令人费解的错误,这是由于 +=
运算符的重载造成的。编译器尝试解析各种版本的运算符,最终在这里找到了这个:
func +=(inout lhs: UInt8, rhs: UInt8)
可能是最后一个它试图解决的问题,所以它在这里抛出一个错误,告诉你 [Any]
与 lhs
的预期类型不同,即 UInt8
在这种情况。
如何将特定类型的对象添加到泛型 Array:[Any]?我的理解是 Any 应该能够包含任何其他对象。这个对吗?不幸的是,当我将特定对象添加到通用数组时,我收到一条错误消息。
例子
"SpecificItemType"
类型的对象数组var results:[SpecificItemType] = []
... // adding various objects to this array
这些对象的通用目标数组
var matchedResults:[Any] = []
matchedResults += results
错误信息
[Any] is not identical to UInt8
这里有什么问题?错误消息并没有真正帮助。
还有一点要注意:有趣的是,可以使用追加来添加单个对象。所以下面的作品
matchedResults.append(results.first)
首先将 Any 更改为 AnyObject 并尝试以下操作:
matchedResults += (results as [AnyObject])
编译器无法解析
上的类型约束func +=<T, C : CollectionType where T == T>(inout lhs: ContiguousArray<T>, rhs: C)
因为您要将 [SpecificType]
添加到 [Any]
,因此 T != T
。
您可以通过向上转换最具体的数组来解决这个问题。
var r = results.map { [=11=] as Any }
matchedResults += r
关于令人费解的错误,这是由于 +=
运算符的重载造成的。编译器尝试解析各种版本的运算符,最终在这里找到了这个:
func +=(inout lhs: UInt8, rhs: UInt8)
可能是最后一个它试图解决的问题,所以它在这里抛出一个错误,告诉你 [Any]
与 lhs
的预期类型不同,即 UInt8
在这种情况。