在早期版本的Swift中,可以将NSMapTable中的键设置为字符串:

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

每:http://nshipster.com/nshashtable-and-nsmaptable/
在Swift 3中,NSMapTable需要通用参数。但当我试着去做的时候:
NSMapTable<String, MyClass>(keyOptions: .strongMemory, valueOptions: .weakMemory)

我得到一个"Type 'String' does not conform to protocol 'AnyObject'"错误。
在Swift 3中将NSMapTable的键设置为字符串的正确方法是什么?

最佳答案

我不会说你自己的答案是“黑客”,只是比需要的更一般,使用:

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

10-08 09:07