【问题标题】:Filter Through Array通过数组过滤
【发布时间】:2011-10-28 08:54:08
【问题描述】:

如何过滤数组并返回包含字符串特定部分的值?我有一个文本框,为了这个例子,用户输入 25,然后点击“完成”按钮。

例子:

Original Array {25-1002, 25-1005, 12-1003, 1000-0942, 1-1, 234-25}

我希望它返回(在对其进行排序并提取我想要的值之后):

New Array {25-1002, 25-1005}

请注意,在原始数组中,234-25 的最后一个值也有 25,但没有被拉出。它必须是连字符第一部分的数字。

提前致谢!

【问题讨论】:

标签: iphone objective-c xcode


【解决方案1】:

作为一个易于理解的答案(不使用NSPredicate,这可能会令人生畏(但确实是正确的做法)):

NSMutableArray *myNewArray = [[NSMutableArray alloc] init];
for (NSString *string in myArray) {
    if([[string substringToIndex:3] isEqualToString @"25-"])
    {
        [myNewArray addObject:string];
    }
}

【讨论】:

    【解决方案2】:

    使用-filteredArrayUsingPredicate: 方法,如下所示:

    NSString *searchText = [someField.text stringByAppendingString:@"-"];
    newArray = [originalArray filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^(NSString *value, NSDictionary *bindings){
        return ([value rangeOfString:searchText].location != NSNotFound)
    }]];
    

    请注意,块(^{} 事物)在 iOS 4 之前不可用,因此如果您还针对 3.x 设备,则必须使用 NSPredicate 的另一个构造函数。

    【讨论】:

      猜你喜欢
      • 2022-01-22
      • 1970-01-01
      • 2022-11-27
      • 1970-01-01
      • 2018-12-24
      • 1970-01-01
      • 1970-01-01
      • 2022-12-01
      • 1970-01-01
      相关资源
      最近更新 更多