繁体   English   中英

使用NSPredicate过滤数组的数组

[英]Filter array of arrays using NSPredicate

我有一个叫做“ SMessage”的类。

@interface SMessage:NSObject
@property(nonatomic)int messageId;
@end

我也可以上Sday课程; SDay可以有很多消息(SMessage);

@interface SDay:NSObject
@property(nonatomic, strong)NSMutableArray *messages;
@end

最后,我有一个普通的班级,在那里我有很多天。

@interface SCommonClass:NSObject 
@property(nonatomic, strong)NSMutableArray *days;
@end

我正在尝试过滤天数组并查找具有messageId = 100(例如)的消息;

而且我不知道如何使用NSPredicate做到这一点; 谢谢你的回答;

NSPredicate *p = [NSPredicate predicateWithBlock:^BOOL(id object, NSDictionary *bindings) {

    SDay* day = (SDay*)object;
    NSMutableArray* messages = day.messages;
    NSPredicate* predicate = [NSPredicate predicateWithFormat:@"messageId == 100"];

    if ([messages filteredArrayUsingPredicate:predicate].count == 0) {
        return NO;
    }
    else{
        return YES;
    }

}];


NSArray* result = [common.days filteredArrayUsingPredicate:p];

============更新===============

NSPredicate *p = [NSPredicate predicateWithBlock:^BOOL(id object, NSDictionary *bindings) {

    SDay* day = (SDay*)object;
    NSMutableArray* messages = day.messages;
    NSPredicate* predicate = [NSPredicate predicateWithFormat:@"messageID == 100"];
    NSArray *filteredMessages = [messages filteredArrayUsingPredicate:predicate];
    if (filteredMessages.count == 0) {
        return NO;
    }
    else{
        day.messages = [NSMutableArray arrayWithArray:filteredMessages];
        return YES;
    }

}];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM