带视图控制器的台风 属性
Typhoon with view controller property
我有class:
class InformationTableViewController: UITableViewController {
private var cos: Int!
}
我正在尝试注入 属性:
public dynamic func informationTableViewController() -> AnyObject {
return TyphoonDefinition.withClass(InformationTableViewController.self) {
(definition) in
definition.injectProperty("cos", with: 3)
}
}
当它是一个简单的 class 时它工作正常。但是当我在 Storyboard 上使用 InformationTableViewController 时(如某些视图 class),我收到错误消息:
'Can't inject property 'cos' for object 'Blah.InformationTableViewController: 0x7fca3300afe0'. Setter selector not found. Make sure that property exists and writable'
有什么问题?
私有访问修饰符将实体的使用限制在其自己的定义源文件中。
所以一个问题是您正试图从私有范围之外设置您的 属性。从 属性 声明中删除私有关键字。
这里的另一个问题是您正在尝试注入原始类型。
在 Obj-C 中,Typhoon 支持注入原始类型,但 Swift 中还没有。
你想要注入的每个 class 都必须以某种方式成为 NSObject 的子class(通过 subclassing 或添加 @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))
}
}
我有class:
class InformationTableViewController: UITableViewController {
private var cos: Int!
}
我正在尝试注入 属性:
public dynamic func informationTableViewController() -> AnyObject {
return TyphoonDefinition.withClass(InformationTableViewController.self) {
(definition) in
definition.injectProperty("cos", with: 3)
}
}
当它是一个简单的 class 时它工作正常。但是当我在 Storyboard 上使用 InformationTableViewController 时(如某些视图 class),我收到错误消息:
'Can't inject property 'cos' for object 'Blah.InformationTableViewController: 0x7fca3300afe0'. Setter selector not found. Make sure that property exists and writable'
有什么问题?
私有访问修饰符将实体的使用限制在其自己的定义源文件中。
所以一个问题是您正试图从私有范围之外设置您的 属性。从 属性 声明中删除私有关键字。
这里的另一个问题是您正在尝试注入原始类型。
在 Obj-C 中,Typhoon 支持注入原始类型,但 Swift 中还没有。
你想要注入的每个 class 都必须以某种方式成为 NSObject 的子class(通过 subclassing 或添加 @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))
}
}