Ios 为什么应用程序在设置属性时陷入无限循环?

Ios 为什么应用程序在设置属性时陷入无限循环?,ios,core-data,properties,swift,optional,Ios,Core Data,Properties,Swift,Optional,1)这是我的自定义UITableViewCell定义: class UserTableViewCell: UITableViewCell { var ou: OU? { set(newOU) { println(newOU) self.ou = newOU } } 2)我正在将NSManagedObject传递给单元格 let s = sth.filteredSetUsingPredicate(NSPredicate(form

1)这是我的自定义UITableViewCell定义:

class UserTableViewCell: UITableViewCell {

    var ou: OU? {
    set(newOU) {

        println(newOU)

        self.ou = newOU
    }   
}
2)我正在将NSManagedObject传递给单元格

let s = sth.filteredSetUsingPredicate(NSPredicate(format: "someAttribute = true"))
let ou: OU = s.anyObject() as OU
cell.ou = ou
3)它会多次写出此日志消息,就像应用程序会陷入无限循环一样

可选((实体:OU;id:0x7a7e3590) ;数据:{ someAttribute=1;})

结论 基本上,我只需要一个简单的存储属性,没有任何新奇的东西:

class UserTableViewCell: UITableViewCell {

    var ou: OU?
}

这是因为您编写的setter调用setter。self.ou=。。。再次调用setter,得到了一个很好的无限递归。这就是堆栈持续的时间

这是因为您编写的setter调用setter。self.ou=。。。再次调用setter,得到了一个很好的无限递归。这就是堆栈持续的时间

发布错误消息。仔细想想。您正在属性的setter中设置属性。如果您只想在值更改时打印它,请使用willSet或didSet。关于SWIFT中的#4,请提供一个?after变量声明表明它是可选的。我猜这就是日志所指的。您是否已尝试删除该选项,并查看可选消息是否仍显示在日志中?发布错误消息。请仔细考虑。您正在属性的setter中设置属性。如果您只想在值更改时打印它,请使用willSet或didSet。关于SWIFT中的#4,请提供一个?after变量声明表明它是可选的。我猜这就是日志所指的。您是否已尝试删除该选项,并查看可选消息是否仍显示在日志中?