使用具有匹配属性的另一个对象数组过滤Core Data对象的数组

时间:2016-10-18 23:11:03

标签: arrays swift sorting core-data

我有一个用于图像的Core Data对象类:

@objc class Image: NSManagedObject {
  @NSManaged var imageData: NSData?
  @NSManaged var recordID: NSNumber?
  @NSManaged var updatedAt: NSDate?  
}

我有两个不同的数组,它们将包含这些对象:

var container0 = [Image]()
var container1 = [Image]()

我想要做的是编写一个函数,过滤掉container1中 recordID 与任何 recordID 匹配的任何图像对象container2中的对象。

类似的东西:

func returnIntersectionByRecordID() -> [Image] {

  var intersection = [Image]()

  for object0 in container0 {
    for object1 in container1 {
      if object0.recordID == object1.recordID {
        intersection.append(object0)
      }
    }
  }
  return intersection
}

但是,我想用过滤器来做这件事。

1 个答案:

答案 0 :(得分:2)

我分两步走了。 首先,使用map

获取第二个数组(container2)的id
// the will produce array if ids
let ids = container2.map({ return $0.recordId }) 

然后,过滤

let result = container.filter({ ids.contains($0.recordId) })