管理 Hyperledger Indy iOS SDK 的回调

Manage callbacks for Hyperledger Indy iOS SDK

提问人:zampi91 提问时间:10/28/2020 更新时间:11/25/2020 访问量:161

问:

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

pod 已正确安装,我可以调用 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 版本不兼容。

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

iOS 回调 AsyncCallback Hyperledger-indy

评论


答:

0赞 zampi91 11/9/2020 #1

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

0赞 Ivan 11/25/2020 #2

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

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