以前做OC项目的时候,给cell赋值的时候是在model的setter方法里面赋值。
- (void)setModel:(ShareListModel *)model
{
if (_model != model)
{
_model = model;
self.titleLab.text = model.title;
self.descriptionLab.text = model.descriptionString;
[self.bigIV sd_setImageWithURL:[NSURL URLWithString:model.bigimageUrl] placeholderImage:nil];
}
}
Swift ,用这种方式好像行不通,下面的代码是按照OC的风格写setter和getter,会报错,setter方法会循环调用
var OCProperty : String {
set {
self.OCProperty = newValue
}
get {
return self.OCProperty
}
}
后来查了一下文档和他人的代码,发现属性有计算属性和存储属性,计算属性用于计算,不能存储值。存储属性才是存储值的,在setter里面给存储属性赋值,在getter里返回存储属性:
var SwiftProperty : String
{
set{
self.SwiftPropertyStore = newValue
}
get{
return self.SwiftPropertyStore
}
}
var SwiftPropertyStore : String!