我有如下代码。
Ticket *ticket1 = [[Ticket alloc] initWithName:@"INC1234" group:@"PIMS-EU-COG" type:@"Incident" status:@"Active" createdOn:@"20-Oct-2013" createdBy:@"Dinesh" completionDate:@"23-Oct-2013" notes:@"1. All works coreectly 2. New variables are created.."];
Ticket *ticket2 = [[Ticket alloc] initWithName:@"PRJ2342" group:@"PIMS-EU-COG" type:@"Project" status:@"Closed" createdOn:@"20-Oct-2013" createdBy:@"Dinesh" completionDate:@"23-Oct-2013" notes:@"1. All works coreectly 2. New variables are created.."];
Ticket *ticket3 = [[Ticket alloc] initWithName:@"ENC1234" group:@"PIMS-EU-COG" type:@"Enhancement" status:@"Awaiting vendor" createdOn:@"20-Oct-2013" createdBy:@"Dinesh" completionDate:@"23-Oct-2013" notes:@"1. All works coreectly 2. New variables are created.."];
Ticket *ticket4 = [[Ticket alloc] initWithName:@"INC2345" group:@"CRM-EU-COG" type:@"Incident" status:@"Active" createdOn:@"20-Oct-2013" createdBy:@"Alex" completionDate:@"23-Oct-2013" notes:@"1. All works coreectly 2. New variables are created.."];
Ticket *ticket5 = [[Ticket alloc] initWithName:@"PRJ2345" group:@"CRM-EU-COG" type:@"Project" status:@"Pending" createdOn:@"20-Oct-2013" createdBy:@"Alex" completionDate:@"23-Oct-2013" notes:@"1. All works coreectly 2. New variables are created.."];
Ticket *ticket6 = [[Ticket alloc] initWithName:@"ENC2345"group:@"CRM-EU-COG" type:@"Enhancement" status:@"Active" createdOn:@"20-Oct-2013" createdBy:@"Alex" completionDate:@"23-Oct-2013" notes:@"1. All works coreectly 2. New variables are created.."];
self.TicketsFinal= [NSMutableArray arrayWithObjects:ticket1,ticket2,ticket3, nil];
/*
if (groupFinal == @"PIMS-EU-COG") {
self.TicketsFinal= [NSMutableArray arrayWithObjects:ticket1,ticket2,ticket3, nil];
}else if (groupFinal == @"CRM-EU-COG")
{
self.TicketsFinal= [NSMutableArray arrayWithObjects:ticket4,ticket5,ticket6,ticket7,ticket8,ticket9, nil];
}*/我有三个参数:
groupsFinal将持有该小组(如:PIMS COG)的详细信息.typeFinal将持有何种类型的票证(例如:意外),而statusFinal将保存票证的状态(ex: Active)。这3个参数是从先前的观点得到的。
我有一个名为self.ticketsFinal的数组,它应该仅根据所选的标准来保存票证。我尝试了硬编码组(最后评论部分)和导航,这不是正确的方法。
例:当groupFinal、TypeFinal、statusFinal的值为PIMS-EU-COG、Incident、Active时,在这种情况下,self.TiketsFinal应该只包含Ticket1 (这符合标准)。
当All在typeFinal和statusFinal中被选中时,组中的所有票证都应该在数组中更新。
有人能帮忙吗。你的帮助非常感谢。
发布于 2013-12-05 19:10:40
为此,您可能可以使用NSPredicate:
[self.TicketsFinal filteredArrayUsingPredicate:
[NSPredicate predicateWithFormat:@"group = %@", @"PIMS-EU-COG"]];这将返回一个新数组,该数组只包含组等于“PIMS”的对象。
您可以看到使用NSPredicate 这里的指南。
而且,如果使用此方法,则数组不需要是可变的。如果您确实希望丢弃与不匹配的项,则可以这样做
[self.TicketsFinal filterUsingPredicate:
[NSPredicate predicateWithFormat:@"group = %@", @"PIMS-EU-COG"]];在这种情况下,需要使用多个参数来筛选对象集。您可以为此使用NSCompoundPredicate:
NSPredicate *groupPredicate = [NSPredicate
predicateWithFormat:@"group = %@", @"PIMS-EU-COG"];
NSPredicate *typePredicate = [NSPredicate
predicateWithFormat:@"type = %@", @"Incident"];
NSCompoundPredicate *compoundPredicate = [NSCompoundPredicate
andPredicateWithSubpredicates:@[groupPredicate, typePredicate]];
NSArray *result = [self.TicketsFinal filteredArrayUsingPredicate:compoundPredicate];https://stackoverflow.com/questions/20408457
复制相似问题