【问题标题】:Manage callbacks for Hyperledger Indy iOS SDK管理 Hyperledger Indy iOS SDK 的回调
【发布时间】:2021-02-10 06:24:13
【问题描述】:

我创建了一个新的 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 callback hyperledger asynccallback hyperledger-indy


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-20
        相关资源
        最近更新 更多