Reputation: 3053
I have a Core Data object class for images:
@objc class Image: NSManagedObject {
@NSManaged var imageData: NSData?
@NSManaged var recordID: NSNumber?
@NSManaged var updatedAt: NSDate?
}
I have two different arrays which will contain these objects:
var container0 = [Image]()
var container1 = [Image]()
What I want to do is write a function that will filter out any Image objects in container1 where the recordID matches the recordID of any object in container2.
Something like:
func returnIntersectionByRecordID() -> [Image] {
var intersection = [Image]()
for object0 in container0 {
for object1 in container1 {
if object0.recordID == object1.recordID {
intersection.append(object0)
}
}
}
return intersection
}
However, I'd like to do this with a filter instead.
Upvotes: 0
Views: 999
Reputation: 3538
I come into two steps. First, get the ids of second array (container2) using map
// the will produce array if ids
let ids = container2.map({ return $0.recordId })
Then, do filtering
let result = container.filter({ ids.contains($0.recordId) })
Upvotes: 2