#arrays #swift #sorting #core-data
#массивы #swift #сортировка #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]()
Что я хочу сделать, так это написать функцию, которая будет отфильтровывать любые объекты изображения в контейнере1, где RecordID совпадает с RecordID любого объекта в контейнере2.
Что — то вроде:
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:
Я делаю два шага. Сначала получите идентификаторы второго массива (container2) с помощью map
// the will produce array if ids
let ids = container2.map({ return $0.recordId })
Затем выполните фильтрацию
let result = container.filter({ ids.contains($0.recordId) })
Комментарии:
1. Спасибо! Отлично работает!
2. Мне очень помогло!