在oc中,如果要比较模型数组中的元素是否相等一般重新isEqual方法即可
-(BOOL)isEqual:(id)object{
if (self == object) {
return YES;
}
if ([object isKindOfClass:[self class]]) {
HXQHoldWorthModel *obj = (HXQHoldWorthModel *)object;
return self.holdCount == obj.holdCount &&
[self.userImg isEqualToString:obj.userImg]&&
[self.realname isEqualToString:obj.realname]&&
self.totalValue == obj.totalValue;
}else{
return NO;
}
}
在swift中已经如果要比较两个元素是否相等使用==
,如果要比较两个model是否相等则需要遵守Equatable协议
class HXQStockProfitModel: HandyJSON,Equatable {
var userId: Int = 0
var nickname: String = ""
var userImg: String = ""
var profit:Int = 0
var title: String = ""
/// json转模型结束后 可以在这里做一些操作
func didFinishMapping() {
title = "\(nickname)赚了\(profit)积分"
}
/// 遵守Equatable协议,并实现该方法 可以让model具有 == 功能
static func == (lhs: HXQStockProfitModel, rhs: HXQStockProfitModel) -> Bool {
return lhs.userId == rhs.userId &&
lhs.nickname == rhs.nickname &&
lhs.userImg == rhs.userImg &&
lhs.profit == rhs.profit &&
lhs.title == rhs.title
}
required init() {
}
}
这样在使用的时候可以直接==
var profits = [HXQStockProfitModel](){
didSet{
//第一次赋值
if oldValue.isEmpty {
updateProfits()
}else{ //更新值
//list中内容与上次是否相同,不相同则更新
if oldValue != profits{
updateProfits()
}
}
}
}