在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()
}
}
}
}
