iOS swift中比較模型數組是否相等


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM