在Swift中使用obj-C运行时方法设置类的属性
我有一个类,我想在运行时设置它的属性值,尽管没有签名来设置它 例如: 我希望能够随意更改此类的状态,因为我正在为单元测试创建存根 存根: 在这里,我希望使用obj-C运行时方法,在Swift中使用obj-C运行时方法设置类的属性,swift,core-bluetooth,Swift,Core Bluetooth,我有一个类,我想在运行时设置它的属性值,尽管没有签名来设置它 例如: 我希望能够随意更改此类的状态,因为我正在为单元测试创建存根 存根: 在这里,我希望使用obj-C运行时方法, setValue:forKey来完成此操作,但我得到了错误: 错误:“&”与类型为“UnsafePointer”的非inout参数一起使用 (又名“未安全指针”) 是否有任何方法可以在运行时设置该类的值以操作该类进行测试?您不能更改CBCentralManager的状态,因为它是只读属性。如果您想执行这样的测试,您需要
setValue:forKey
来完成此操作,但我得到了错误:
错误:“&”与类型为“UnsafePointer”的非inout参数一起使用
(又名“未安全指针”)
是否有任何方法可以在运行时设置该类的值以操作该类进行测试?您不能更改
CBCentralManager
的状态,因为它是只读属性。如果您想执行这样的测试,您需要模拟CBCentralManager类,您可以使用更改ivar的值,但是您的案例更复杂,因为属性是只读的。该属性可以是一个计算属性,可能涉及超过1个ivarThank,请大家提出建议-我能够覆盖存根中的状态变量并获得所需的内容。
public class CBCentralManager : NSObject {
public var state: CBCentralManagerState { get }
...
}
class CBCentralManagerStub: CBCentralManager {
func changeState(newState: CBCentralManagerState) {
let val: NSValue = NSValue(&newState, withObjCType: &(CBCentralManagerState.rawValue))
self.setValue(val, forKey:"state")
}
}