2016-05-25 1 views
0

私は2つのエンティティを持っている:配列から各オブジェクトの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? 

} 

私はすべての出席を取得し、中にあるどのように多くの製品をカウントするためにフェッチを実行する必要がありますよ出席者:

出席者をフェッチする方法はあります。出席者IDを持つ製品の数をどのように得ることができますか?その出席し、製品は1対多の関係を持っているので、あなたのデータモデルを設定していると仮定すると、

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) } 

これは、idと製品数を持つタプルの配列を返します。これは非常に簡潔な方法です。

関連する問題