我有一个名为'gLotNumber'的核心数据属性,用于存储字母数字字符串。示例包括P1
,P5
,7
,P10
和11
。
我需要提供一种向用户搜索此属性的方法。我能想到提供这个的方法是使用NSPredicate核心数据:
[fetchRequest1 setPredicate:[NSPredicate predicateWithFormat:@"(gLotNumber >= 'P1') AND (gLotNumber <= 'P15')"]];
这会导致所有条目以P
开头,范围在1到15之间。上述代码根本无法生成准确的结果。
你知道如何实现这一目标吗?
答案 0 :(得分:0)
我相信这应该有用
我没有设置coredata,因此会对某些数组值进行编码。
NSArray *array = @[@{@"gLotNumber":@"P1"},@{@"gLotNumber":@"P15"},@{@"gLotNumber":@"P13"},@{@"gLotNumber":@"P0"},@{@"gLotNumber":@"11"},@{@"gLotNumber":@"10"},@{@"gLotNumber":@"P31"},@{@"gLotNumber":@"P013"},@{@"gLotNumber":@"16"},@{@"gLotNumber":@"P38"}];
NSArray *filtered = [array filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"SELF.gLotNumber BEGINSWITH 'P' AND SELF.gLotNumber <= 'P15'"]];
NSSortDescriptor *desc = [NSSortDescriptor sortDescriptorWithKey:@"gLotNumber" ascending:YES comparator:^NSComparisonResult(id obj1,id obj2){
return [obj1 compare:obj2 options:NSNumericSearch];
}];
NSArray *sorted = [filtered sortedArrayUsingDescriptors:@[desc]];
您可以将排序描述符和谓词设置为fetch request
希望这有助于