This question already has an answer here:
Declare “NSMapTable StrongObject” in Swift 3
(1个答案)
三年前关闭。
下一行给出编译器错误“无法推断泛型参数'KeyType'”:
fileprivate var delegatesMap = NSMapTable.strongToWeakObjects()

我试着更明确地说:
fileprivate var delegatesMap:MapTable<Key,Value> = NSMapTable.strongToWeakObjects()

但Xcode无法识别“Key”
我该怎么解决这个问题?
编辑:我希望我的键是String类型,我的值是MenuActionDelegate类型(类协议)

最佳答案

你可能需要这样写:

fileprivate var delegatesMap = NSMapTable<NSString, MenuActionDelegate>.strongToWeakObjects()

一般参数KeyTypeValueType需要AnyObject,因此不能直接放在那里,还需要一些显式的castingString
值类型需要一个as NSString-协议。
或者你可能需要这样写:
var delegatesMap = NSMapTable<NSString, AnyObject>.strongToWeakObjects()

并将其用作:
let theDelegate = delegatesMap.object(forKey: "delegateName" as NSString) as! MenuActionDelegate

关于swift - NSMapTable“无法推断通用参数'KeyType'”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39758735/

10-15 18:10