WebObjects/Project WONDER/Frameworks/ERExtensions/ERXArrayUtilities
ERXArrayUtilities 提供用于操作 NSArrays 的便捷方法和工具。许多方法是不言自明的。有关完整列表,请参阅 api (http://webobjects.mdimension.com/wonder/api/er/extensions/foundation/ERXArrayUtilities.html).
WebObjects 提供了 @sum、@avg 等数组运算符。ERXArrayUtilities 添加了许多其他运算符
SortOperator: 为键 sort 定义一个 NSArray.Operator。
这允许使用以下键值路径:
myArray.valueForKey("@sort.firstName");
myArray.valueForKey("@sort.lastName,firstName");
在第一种情况下,将返回按姓氏升序排序的 myArray,在第二种情况下,按姓氏升序排序,然后按名字升序排序。
其他注册的排序运算符是:@sortAsc、@sortDesc、@sortInsensitiveAsc、@sortInsensitiveDesc
FetchSpecOperator: 为键 fetchSpec 定义一个 NSArray.Operator。
这允许使用以下键值路径:
myArray.valueForKey("@fetchSpec.fetchUsers");
在这种情况下,将返回按名为“fetchUsers”的 EOFetchSpecification 过滤和排序的 myArray,该规范必须是第一个对象的实体中的基于模型的 fetchspec。
FlattenOperator: 为键 flatten 定义一个 NSArray.Operator。
这允许使用以下键值路径:
myArray.valueForKey("@flatten");
在这种情况下,如果 myArray 是 NSArrays(NSArrays 等)的 NSArray,则将返回扁平化的 myArray。
IsEmptyOperator: 为键 isEmpty 定义一个 NSArray.Operator。
这允许使用以下键值路径:
myArray.valueForKey("@isEmpty");
SubarrayWithRangeOperator: 为键 subarrayWithRange 定义一个 NSArray.Operator。
这允许使用以下键值路径:
myArray.valueForKey("@subarrayWithRange.3-20");
UniqueOperator: 为键 unique 定义一个 NSArray.Operator。
这允许使用以下键值路径:
myArray.valueForKeyPath("@unique.someOtherPath");
在这种情况下,将仅返回 myArray 中唯一的那些对象。
RemoveNullValuesOperator: 为键 removeNullValues 定义一个 NSArray.Operator。
这允许使用以下键值路径:
myArray.valueForKeyPath("@removeNullValues.someOtherPath");
在这种情况下,将返回 myArray,不包含 NSKeyValueCoding.Null 的出现次数。
ObjectAtIndexOperator: 为键 objectAtIndex 定义一个 NSArray.Operator。
这允许使用以下键值路径:
myArray.valueForKey("@objectAtIndex.3.firstName");
AvgNonNullOperator: 为键 avgNonNull 定义一个 NSArray.Operator。
这允许使用以下键值路径:
myArray.valueForKey("@avgNonNull.revenue");
将对所有值求和并除以非空条目的数量。
ReverseOperator: 为键 reverse 定义一个 NSArray.Operator。
这允许使用以下键值路径:
myArray.valueForKey("@reverse.someMorePath");
返回与正常情况下获得的结果相反的结果。
MedianOperator: 为键 median 定义一个 NSArray.Operator。
这允许使用以下键值路径:
myArray.valueForKey("@median.someMorePath");
返回给定键路径处数组元素的中位数。中位数是数组元素中一半元素高于它,一半元素低于它的值。因此,需要对数组进行排序,这可能会非常昂贵,具体取决于数组的大小。