Ios 为什么应用程序在设置属性时陷入无限循环?
1)这是我的自定义UITableViewCell定义: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
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变量声明表明它是可选的。我猜这就是日志所指的。您是否已尝试删除该选项,并查看可选消息是否仍显示在日志中?