2017-02-02 13 views
1

CoreDataエンティティの構造をとる:Coredata:関連オブジェクトを設定すると、長すぎる

Invoice <---->> Invoiceline <<-----> Product

NSManagedオブジェクトクラスの実装

// intended to be overridden by the subclass 
class var entityName { /* return the entity name */ } 

// generic class function to create new entity 
class func create() -> NSManagedObject 
{ 
    let context = // the main context 
    let record = NSEntityDescription.insertNewObjectForEntityForName(self.entityName, inManagedObjectContext: context) 
    return record 
} 

サンプルトランザクション:

let product = // a product object 
let invoice = Invoice.create() as! Invoice 
let invoiceLine = InvoiceLine.create() as! InvoiceLine 

invoiceLine.product = product 
invoiceLine.invoice = invoice 

// complete the transaction 
invoice.checktout() 

数コリドータに挿入されているインボイスの数が200に達するKは、invoiceLine'sproductプロパティは時間がかかりすぎる設定:

invoiceLine.product = product 

だから、私は、メモリの割り当てをチェックするためにXCodeの機器を使用し、私は毎回私invoiceLine.product = productは、coredataが私の中で、productためinvoiceLinesすべての関連をロードしている、ということが分かりましたケース6KがinvoiceLinesであるため、別のproductinvoiceLineに関連付けると、その特定のproductのすべての関連するinvoiceLineがロードされ、最終的にはメモリの割り当てが大きくなります。

質問:invoiceLine.product = productを:それは私が行うときproductためinvoiceLineを関連するすべてのロードからcoredataを防ぐことは可能ですか?

答えて

0

それは良い習慣である場合、私は知らないが、私はinvoicelineからproductの逆の関係を遮断することで、実行時間を短縮するために管理:

invoiceLine ----> product

この時間は、CoreDataを持ってい私が必要としない具体的なproductのすべての関連するinvoicelineをロードする理由はありません。したがって、パフォーマンスが向上します。

関連する問題