在以下reversedArray
中有三个或更多字符串,例如Salads
,Meats
Appetizer
。
但是,我希望Meats
始终是数组中的第一个字符串。
NSPredicate *predicateMain = [NSPredicate predicateWithFormat:
@"(%K == %@)", @"categoryType", @"main"];
NSPredicate *predicateSide = [NSPredicate predicateWithFormat:
@"(%K == %@)", @"categoryType", @"side"];
NSPredicate *orPredicate = [NSCompoundPredicate orPredicateWithSubpredicates:
[NSArray arrayWithObjects:predicateMain, predicateSide,nil]];
NSArray *filteredArray = [foods filteredArrayUsingPredicate:orPredicate];
NSArray *reversedArray = [[[filteredArray valueForKeyPath:
@"@distinctUnionOfObjects.categoryName"]
reverseObjectEnumerator] allObjects];
我可以通过硬编码来完成,但我想知道正确的处理方式。
答案 0 :(得分:0)
为了避免硬编码,您可以编写一个函数来重新排序数组,并将任何给定的字符串作为第一个字符串,并使用它。
例如:
void yourFunctionName(string firstString, NSArray &array){
//Iterate through array
//Check if you've found a string matching firstString
//Put it at the front by moving everything else down one
//Continue to iterate until you've reached the end of the array
}
这里最好通过引用传递数组(使用&),以便修改数组本身,而不仅仅是数组值的副本(当您不通过引用传递时获得的数据)。