管理Hyperledger Indy iOS SDK的回调

问题描述

我创建了一个新的xCode项目(swiftUI),并按照指南安装了Indy iOS SDK。 链接https://github.com/hyperledger/indy-sdk/blob/master/wrappers/ios/README.md

吊舱已正确安装,我可以调用SDK提供的各种功能

我想按顺序执行以下操作:

  1. 创建钱包
  2. 打开钱包

我试图嵌套两个操作:

let error = indy_create_wallet(0,walletConfig,credentials,{(commandHandle,err) in
        print("Create wallet error: ",err)
        let error = indy_open_wallet(1,self.walletConfig,self.credentials,{(commandHandle2,err2,handle) in
            print("Open wallet error: ",err2)
            
        })
    })

但是,在这种情况下,我会收到错误:无法从捕获上下文的闭包中形成C函数指针

我尝试使用dispatchGroup,但再次出现相同的错误,因为我必须在回调内的对象上调用Leave()方法

不幸的是,我无法使用“ libindy-objc”包装器,因为它与我使用的swift版本不兼容。

有人对我如何管理这些回调以顺序执行钱包创建和打开操作有任何想法吗?谢谢!

解决方法

为解决该问题,我(在一个新组中)导入了包装器源文件。

,

为什么不在github上使用已经准备好的包装器? https://github.com/hyperledger/indy-sdk/tree/master/wrappers/ios/libindy-pod/Indy/Wrapper

这是用ObjC编写的,但是使用Swift可以生成一个映射接口,然后可以使用DispatchSemaphore.signal.wait来对操作进行排序