2016-05-25 1 views
0

У меня 2 Entities:Как выполнить подсчет fetchRequest для каждого объекта из массива?

Attendace:

import Foundation 
import CoreData 

extension Attendance { 

    @NSManaged var date: NSDate? 
    @NSManaged var id: NSNumber? 
    @NSManaged var id_consultant: String? 
    @NSManaged var id_store: NSNumber? 
    @NSManaged var name: String? 
    @NSManaged var status: String? 

} 

и продукт:

import Foundation 
import CoreData 

extension Product { 

    @NSManaged var id: String? 
    @NSManaged var name: String? 
    @NSManaged var preco: String? 
    @NSManaged var attendance: Attendance? 

} 

Я все выборки посещаемости и нужно выполнить выборку, чтобы подсчитать, сколько продуктов есть в a Посещаемость:

Есть мой метод для получения посещений. Как я могу получить количество продуктов с идентификатором посещаемости?

func fetchAttendances() { 
    let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate 

    let managedContext = appDelegate.managedObjectContext 

    let fetchRequest = NSFetchRequest(entityName: "Attendance") 
    let attendancePredicate = NSPredicate(format: "id_store == \(Int(Helper.userDefaults().objectForKey(ConstantHelper.kIdStore)! as! NSNumber))") 
    fetchRequest.predicate = attendancePredicate 

    do { 
     let results = try managedContext.executeFetchRequest(fetchRequest) 
     myAttendances = results as! [NSManagedObject] 



     self.collectionAttendances.reloadData() 
    } catch let error as NSError { 
     print("Could not fetch \(error), \(error.userInfo)") 
    } 
} 
+0

Является ли обратная связь опцией? – vadian

+0

Почему бы не использовать отношения «один ко многим» от «Посещения к продукту», чтобы вам не нужно писать код извлечения, просто проверьте размер набора? –

ответ

0

Предполагая, что вы создали модель данных, так что посещаемость и продукт имеет отношение один-ко-многим ...

Attendance <---->> Product 

... вы можете использовать синтаксис map для выполнения это в очень сжатом виде:

let countArray = attendanceArray.map { ($0.id, $.products?.count ?? 0) } 

Это возвращает массив кортежей с идентификатором и подсчета продукции.

Смежные вопросы