无法推断NSMapTable“通用参数'KeyType'”

时间:2016-09-28 22:40:28

标签: swift xcode generics swift3

以下行给出了编译器错误“无法推断出通用参数'KeyType'”:

fileprivate var delegatesMap = NSMapTable.strongToWeakObjects()

我试着更明确地说:

fileprivate var delegatesMap:MapTable<Key,Value> = NSMapTable.strongToWeakObjects()

但是我接着Xcode不承认“Key”

我该如何解决这个问题?

编辑:我希望我的Key是String类型,我的值是MenuActionDelegate类型(类协议)

1 个答案:

答案 0 :(得分:0)

你可能需要写这样的东西:

this.state = {}

通用参数fileprivate var delegatesMap = NSMapTable<NSString, MenuActionDelegate>.strongToWeakObjects() KeyType必须为ValueType,因此您无法直接将AnyObject放在那里,也需要一些显式投射String

值类型as NSString需要MenuActionDelegate - 协议。 否则你可能需要写这样的东西:

@objc

并将其用作:

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