2016-11-20 47 views
0

在早期版本的雨燕,有可能在我NSMapTable的钥匙是串:如何使用NSMapTable与斯威夫特3串钥匙?

let mapTable = NSMapTable(keyOptions: .StrongMemory, valueOptions: .WeakMemory) 
... 
mapTable.setObject(..., forKey: "foo") 

每页:http://nshipster.com/nshashtable-and-nsmaptable/

在斯威夫特3,NSMapTable需要泛型参数。但是,当我尝试做:

NSMapTable<String, MyClass>(keyOptions: .strongMemory, valueOptions: .weakMemory) 

我得到一个"Type 'String' does not conform to protocol 'AnyObject'"错误。

的是让我的NSMapTable的钥匙是串在斯威夫特3正确的方法是什么?

回答

1

我不会说自己的答案是“黑客”,只比需要,使用更加普遍:

NSMapTable<NSString, MyClass>(keyOptions: .strongMemory, valueOptions: .weakMemory) 
... 
mapTable.setObject(..., forKey: "foo") 
+0

啊 - 咄!谢谢。 – rmh

+0

我花了5分钟扫描察觉你和原来的区别。我看到你的密钥类型是NSString的地方原来是字符串。 – joelliusp

0

回答我的问题。

这似乎工作:

NSMapTable<AnyObject, MyClass>(keyOptions: .strongMemory, valueOptions: .weakMemory) 
... 
mapTable.setObject(..., forKey: "foo") 

这种感觉有点像黑客对我有关系吗?