我有一个要定义的类,如下所示:
class MockUrlContentLoader : MockObject<MockUrlContentLoader.FunctionCall>, UrlContentLoader {
enum FunctionCall : Hashable {
case createString(fromContentsOf: URL, encoding: String.Encoding)
}
func createString(fromContentsOf url: URL, encoding enc: String.Encoding) throws -> String {
if let responseValue = try executeThrowableFunctionCall( FunctionCall.createString(fromContentsOf: url, encoding: enc) ) {
return responseValue as! String
} else {
return ""
}
}
}
在Xcode 9中导致永无止境的编译。
当我按如下所示重新定义类时,代码将按预期编译并运行:
enum MockUrlContentLoaderFunctionCall : Hashable {
case createString(fromContentsOf: URL, encoding: String.Encoding)
}
class MockUrlContentLoader : MockObject<MockUrlContentLoaderFunctionCall>, UrlContentLoader {
func createString(fromContentsOf url: URL, encoding enc: String.Encoding) throws -> String {
if let responseValue = try executeThrowableFunctionCall( MockUrlContentLoaderFunctionCall.createString(fromContentsOf: url, encoding: enc) ) {
return responseValue as! String
} else {
return ""
}
}
}
我更喜欢第一种形式,因为它看起来更具可读性。 Xcode为什么不编译第一种形式? Swift编译器中有一些错误吗?