gpt4 book ai didi

ios - 具有 View Controller 属性的台风

转载 作者:行者123 更新时间:2023-11-30 13:56:37 24 4
gpt4 key购买 nike

我有课:

class InformationTableViewController: UITableViewController {
private var cos: Int!
}

我正在尝试注入(inject)属性:

public dynamic func informationTableViewController() -> AnyObject {
return TyphoonDefinition.withClass(InformationTableViewController.self) {
(definition) in

definition.injectProperty("cos", with: 3)
}
}

当它是一个简单的类时,它可以正常工作。但是当我在 Storyboard 上使用 InformationTableViewController (作为某些 View 类)时,我收到错误:

'Can't inject property 'cos' for object 'Blah.InformationTableViewController: 0x7fca3300afe0'. Setter selector not found. Make sure that property exists and writable'

有什么问题吗?

最佳答案

私有(private)访问修饰符将实体的使用限制在其自己定义的源文件中。

所以一个问题是您试图从私有(private)范围之外设置您的属性。从属性声明中删除 private 关键字。

这里的另一个问题是您正在尝试注入(inject)原始类型。

在 Obj-C Typhoon 中支持注入(inject)原始类型,但在 Swift 中尚不支持。

您想要注入(inject)的每个类都必须以某种方式成为 NSObject 的子类(通过子类化或添加 @objc 修饰符)。

作为解决方法,您可以为您的属性使用 NSNumber 而不是 Int 类型。

class InformationTableViewController: UITableViewController {
var cos: NSNumber!
}

组装:

public dynamic func informationTableViewController() -> AnyObject {
return TyphoonDefinition.withClass(InformationTableViewController.self) {
(definition) in

definition.injectProperty("cos", with: NSNumber.init(int: 3))
}
}

关于ios - 具有 View Controller 属性的台风,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33545885/

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