gpt4 book ai didi

ios - 使用 Swinject 时如何将参数传递给 resolve 方法?

转载 作者:搜寻专家 更新时间:2023-10-30 23:15:06 26 4
gpt4 key购买 nike

我有一个测试项目,我试图将参数传递给 Swinject 中的 resolve 方法项目。

这是我的 Swinject Storyboard扩展文件中包含的示例。

import Swinject

extension SwinjectStoryboard {

class func setup() {

let mainDm = MainDM()

defaultContainer.register(MainDM.self) { _ in
mainDm
}

defaultContainer.registerForStoryboard(ViewController.self) { r, c in
c.dm = r.resolve(MainDM.self)
c.container = defaultContainer

}


defaultContainer.register(GetMessageAction.self) { _, delegate in
GetMessageAction(dm:mainDm, delegate: delegate)
}

}

}

在我的 ViewController 中,我正在尝试执行以下操作来解析 GetMessageAction

@IBOutlet weak var myText: UILabel!

var dm:MainDM!
var container:Container!

override func viewDidLoad() {
super.viewDidLoad()

NSTimer.scheduledTimerWithTimeInterval(NSTimeInterval(3), target: self, selector: #selector(ViewController.getMessage), userInfo: nil, repeats: false)

}

func getMessage() {

let action:GetMessageAction? = container.resolve(GetMessageAction.self, argument: self)!
action?.execute()

}

当我的 getMessage 函数运行时,我收到以下消息

fatal error: unexpectedly found nil while unwrapping an Optional value

最佳答案

由于使用参数解析依赖于参数类型的精确匹配,因此您需要向下转换传递的对象:

container.resolve(GetMessageAction.self, argument: self as GetMessageActionDelegate)!

假设 GetMessageActionDelegate 是在构造函数 GetMessageAction(dm:delegate:) 中传递的委托(delegate)类型。

关于ios - 使用 Swinject 时如何将参数传递给 resolve 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37767606/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com