以枚举作为标识符的Swift字典未在完成块中自动完成

以枚举作为标识符的Swift字典未在完成块中自动完成,swift,xcode,swift4,Swift,Xcode,Swift4,我有一个函数,返回一个完成。完成参数在一个自定义类中具有一个使用枚举作为标识符的字典 我面临的问题是,Xcode无法识别变量的类型,并且在完成块内部使用时无法自动完成 我的代码是这样的 作用 func testFunc (completion:(PrxServiceResponseCallback) ->()){ let responseCallback = PrxServiceResponseCallback() completion(responseCallback)

我有一个函数,返回一个完成。完成参数在一个自定义类中具有一个使用枚举作为标识符的字典

我面临的问题是,Xcode无法识别变量的类型,并且在完成块内部使用时无法自动完成

我的代码是这样的

作用

func testFunc (completion:(PrxServiceResponseCallback) ->()){
    let responseCallback = PrxServiceResponseCallback()
    completion(responseCallback)
}
阶级

调用函数

testFunc { (testResonse) in
    testResonse.response[.]//Not Auto completing
}
使用枚举作为标识符制作字典的整个想法是为了简化字典返回的属性,但是,如果我不能自动完成,这个想法就没有意义了


有什么想法吗

如果使用
var响应:[UIColor:Any]=[UIColor:Any]()
它仍然没有给自动完成,所以这不是你的问题,你不能做很多

如果需要自动完成,则使用
PrxResponseAttributes
和。(dot)

你可以这样做

testResonse.response[PrxResponseAttributes.sourceProtocolInfoArray]
编辑

注意:只有在
PrxServiceResponseCallback
类中添加一个属性时,才会在实现的闭包中发生这种情况

 var anyValue:Any? {
    return response[.connectionInfo] // it is showing completion 
}

如果使用
var响应:[UIColor:Any]=[UIColor:Any]()
它仍然没有给自动完成,所以这不是你的问题,你不能做很多

如果需要自动完成,则使用
PrxResponseAttributes
和。(dot)

你可以这样做

testResonse.response[PrxResponseAttributes.sourceProtocolInfoArray]
编辑

注意:只有在
PrxServiceResponseCallback
类中添加一个属性时,才会在实现的闭包中发生这种情况

 var anyValue:Any? {
    return response[.connectionInfo] // it is showing completion 
}

Xcode不提供自动完成功能并不意味着代码无法编译。这只是意味着Xcode太蠢了,无法解决问题。我以前曾多次遇到这种情况。它似乎总是发生在闭包内部

您可以忽略没有自动完成显示的事实,自己键入案例名称:

testResonse.response[.sourceProtocolInfoArray]
它将编译

还可以考虑创建一个结构,而不是将值存储在字典中。下面是一个示例结构(我猜是类型):


Xcode不提供自动完成功能并不意味着代码无法编译。这只是意味着Xcode太蠢了,无法解决问题。我以前曾多次遇到这种情况。它似乎总是发生在闭包内部

您可以忽略没有自动完成显示的事实,自己键入案例名称:

testResonse.response[.sourceProtocolInfoArray]
它将编译

还可以考虑创建一个结构,而不是将值存储在字典中。下面是一个示例结构(我猜是类型):


PrxResponseAttributes。对于圆点,这是我想要避免的事情…@ReimondHill我理解,但它不在你的控制范围内:(因此您没有其他选择了,请同时检查edit@ReimondHill你可以用struct来代替dictionarystuct而不是dictionary?我该怎么做?用你需要的属性创建struct并用as
response:yourStruct
PrxResponseAttributes。有了点,这是我想要避免的事情…@ReimondHill I understand,但它不在您的控制范围内:(因此您没有其他选择了,请同时检查edit@ReimondHill您可以使用struct来代替dictionarystuct而不是dictionary?我该怎么做?使用您所需的属性创建struct,并使用as
response:yourStruct
I明白了…我使用的是枚举,因为回调类在di中被重用了50次不同的函数,字典的思想是发送标识的值,因为每个函数返回不同的值。我明白了…我使用枚举是因为回调类在不同的函数中被重用了50次,字典的思想是发送标识的值,因为每个函数返回不同的值.