【发布时间】:2020-08-20 04:32:01
【问题描述】:
我正在尝试使用这个 https://github.com/bricklife/JSONRPCKit 。它是 Swift 的 JSONRPC 的简单实现。
这是自述文件中的示例。很简单。
// Generating request JSON
let batchFactory = BatchFactory(version: "2.0", idGenerator: NumberIdGenerator())
let request = Subtract(minuend: 42, subtrahend: 23)
let batch = batchFactory.create(request)
batch.requestObject // ["jsonrpc": "2.0", "method": "subtract", "params": [42, 23], "id": 1]
// Parsing response JSON
let responseObject: Any = ["jsonrpc": "2.0", "result": 19, "id": 1]
let response = try! batch.responses(from: responseObject)
我想跟踪batch,即使它是在类的函数中创建的。所以另一个功能(当我从我的服务器收到回复时)。可以访问特定的请求/批处理/批处理元素并执行它需要的任何功能。
我无法使用 JSONRPCKit 中的任何类型在我的类中创建变量。
我收到如下编译器错误:
Protocol 'Batch' 只能用作通用约束,因为它具有 Self 或关联的类型要求
对泛型“Batch1”的引用需要 <...>
中的参数
协议类型'Request'的值不能符合'Request';只有结构/枚举/类类型可以符合协议
我尝试以某种方式使用泛型 in 函数来避免我的问题,但这也无济于事。
func store_b<Batch: JSONRPCKit.Batch>(_ batch: Batch){
更多信息:batch 是 Batch1 类型,如下所示:
public struct Batch1<Request: JSONRPCKit.Request>: Batch {
而Batch 是一个协议
public protocol Batch {
是否有一种简单的方法来跟踪我的batch 请求并获得响应/如何正确使用这些泛型?
【问题讨论】: