Add interal allObjects on NSOrderedSet
diff --git a/Foundation/NSOrderedSet.swift b/Foundation/NSOrderedSet.swift
index 99d775b..2146083 100644
--- a/Foundation/NSOrderedSet.swift
+++ b/Foundation/NSOrderedSet.swift
@@ -120,6 +120,16 @@
_insertObject(obj)
}
}
+
+ internal var allObjects: [Any] {
+ if type(of: self) === NSOrderedSet.self || type(of: self) === NSMutableOrderedSet.self {
+ return _orderedStorage.map { _SwiftValue.fetch($0) }
+ } else {
+ return (0..<count).map { idx in
+ return self[idx]
+ }
+ }
+ }
}
extension NSOrderedSet : Sequence {
diff --git a/Foundation/NSPredicate.swift b/Foundation/NSPredicate.swift
index dae8157..083782b 100644
--- a/Foundation/NSPredicate.swift
+++ b/Foundation/NSPredicate.swift
@@ -127,8 +127,8 @@
extension NSOrderedSet {
open func filtered(using predicate: NSPredicate) -> NSOrderedSet {
- return NSOrderedSet(array: self._orderedStorage.filter({ object in
- return predicate.evaluate(with: _SwiftValue.fetch(object))
+ return NSOrderedSet(array: self.allObjects.filter({ object in
+ return predicate.evaluate(with: object)
}))
}
}