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");
返回給定鍵路徑處陣列元素的中位數。中位數是陣列元素中一半元素高於它,一半元素低於它的值。因此,需要對陣列進行排序,這可能會非常昂貴,具體取決於陣列的大小。