簡體   English   中英

iOS:如何使用NSPredicate進行過濾 <string *> 排列

[英]iOS: How to use NSPredicate to filter <string *>Array

我打算寫一個日期過濾器。

 NSMutableArray *muarray  = @[
                        @"2019/6",
                        @"2019/5",
                        @"2019/4",
                        @"2019/3",
                        @"2019/2",
                        @"2019/1",
                        @"2018/12",
                        @"2018/11",
                        @"2018/10",
                        @"2018/9",
                        @"2018/8",
                        @"2018/7",
                        @"2018/6",
                        @"2018/5",
                        @"2018/4",
                        @"2018/3",
                        @"2018/2",
                        @"2018/1",
                        @"2017/12",
                        @"2017/11",
                        @"2017/10",
                        @"2017/9",
                        @"2017/8",
                        @"2017/7",
                        @"2017/6",
                       @"2017/5",
                       @"2017/4",
                        @"2017/3",
                        @"2017/2",
                        @"2017/1"
                         ].mutableCopy;

    NSString *tempStr = [NSString stringWithFormat:@"self between {\'%@\',\'%@\'}", @"2017/8", @"2018/8"];

     NSPredicate *predicate = [NSPredicate predicateWithFormat:tempStr];

   [muarray filterUsingPredicate:predicate];

我想將項目從“2017/8”過濾到“2018/8”。 我的代碼不起作用。 怎么修?

首先,你需要的數組轉換NSString到數組NSDate與應用濾鏡NSDate 請使用以下代碼來滿足您的要求。

碼:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy/MM"];

NSMutableArray *muarray  = @[
                             @"2019/6",@"2019/5",@"2019/4",@"2019/3",@"2019/2",@"2019/1",@"2018/12",@"2018/11",@"2018/10",@"2018/9",@"2018/8",@"2018/7",@"2018/6",@"2018/5",@"2018/4",@"2018/3",@"2018/2",@"2018/1",@"2017/12",@"2017/11",@"2017/10",@"2017/9",@"2017/8",@"2017/7",@"2017/6",@"2017/5",@"2017/4",@"2017/3",@"2017/2",@"2017/1"
                             ].mutableCopy;

NSMutableArray* aryDates = [NSMutableArray new];
for (NSString* strDate in muarray) {
    NSDate *dateFromString = [dateFormatter dateFromString:strDate];
    [aryDates addObject:dateFromString];
}
NSDate* date1 = [dateFormatter dateFromString:@"2017/8"];
NSDate* date2 = [dateFormatter dateFromString:@"2018/8"];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF BETWEEN %@", [NSArray arrayWithObjects:date1, date2, nil]];
[aryDates filterUsingPredicate:predicate];
NSLog(@"%@",aryDates);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM