我想创建一个具有多个键值对和不同值类型的NSDictionary。我的主要问题是如何在NSDictionary中添加一个简单的(2项)-Tuple和NSString?
只需将字符串甚至元组添加到NSDictionary就很简单了。 但要加两者都很复杂。 我试过这个:
var myTuple = (longitude: -122.1234, latitude: 55.1234)
var aPersonDictionary: [String:AnyObject] = ["firstname":"Sally", "age":45, "location":myTuple]
但这不起作用。它给了我错误:Value of type '(longitude: Double, latitude: Double') does not conform to expected dictionary value type 'AnyObject'
。
我不明白,因为AnyObject
就是一切
非常感谢任何帮助
答案 0 :(得分:2)
实际上AnyObject
并不是一切。它代表任何class
类型的实例。因此,您希望拥有的东西可以是Any
,它可以代表任何类型的实例,包括函数类型。
var myTuple = (longitude: -122.1234, latitude: 55.1234)
var aPersonDictionary: [String : Any] = ["firstname":"Sally", "age":45, "location":myTuple]
答案 1 :(得分:0)
您应该使用Any
而不是AnyObject
,因为AnyObject
用于类类型的实例(元组不是),它应该是:
myTuple = (longitude: -122.1234, latitude: 55.1234)
var aPersonDictionary: [String:Any] = ["firstname":"Sally", "age":45, "location":myTuple]
进一步解释:
AnyObject可以表示任何类类型的实例。
除功能类型外,任何类型都可以代表任何类型的实例。