Ios 在didSet中调用函数在类中不起作用
我有以下代码在操场上工作。didSet观察员正在按预期工作Ios 在didSet中调用函数在类中不起作用,ios,swift,Ios,Swift,我有以下代码在操场上工作。didSet观察员正在按预期工作 struct itemStruct { var name : String = "" { didSet (newName) { didSetNameTest(name) } } } func didSetNameTest (name : String) { println("didSet itemStruct: \(name)") } var item = itemStruct() item.n
struct itemStruct {
var name : String = "" {
didSet (newName) {
didSetNameTest(name)
}
}
}
func didSetNameTest (name : String) {
println("didSet itemStruct: \(name)")
}
var item = itemStruct()
item.name = "test"
如果在类中移动代码,则会出现编译器错误:
class itemClass {
struct classItemStruct{
var name : String = "" {
didSet(newName) {
didSetClassNameTest(name)
}
}
}
func didSetClassNameTest(name:String) {
println("didSet itemClass: \(name)")
}
var structItem = classItemStruct()
}
var cItem = itemClass()
cItem.structItem.name = "Test"
错误:无法使用类型为“(字符串)”的参数列表调用“didSelectClassNameTest”
所有代码都可以在操场上复制。由于内部类的实例独立于外部类的任何实例,如@ABakerSmith注释链接中所述,因此可能的解决方法是将didSetClassNameTest函数设为私有和静态,然后静态调用它
itemClass.didSetClassNameTest(name)
关于didSet方法内部类型独立于外部类型。与java中的不同,classItemStruct对其外部类型一无所知itemClass
您看过了吗。内部类型的实例似乎独立于外部类型的任何实例。向didSetClassNameTest添加static可修复此错误