Alcuni retroscena:Hai bisogno di alcuni chiarimenti in merito refreshObject: mergeChanges: SI
Sto cercando di memorizzare una grande quantità di dati in DB locali e voglio farlo nel modo più efficiente possibile.
Scenario:
Ci sono molte entità che sono correlati tra loro, come l'indirizzo è associato a un contatto del genere:
indirizzo < < -> contatto
Per gestire le relazioni, ho scritto un metodo in ciascuna sottoclasse di NSManagedObject, di seguito è riportato un frammento di codice:
// class Contact
- (void)manageRelationships
{
@autoreleasepool {
LocalDBManager *localDBManager = [[LocalDBManager alloc] init];
// managing relationships
// map associated addresses
NSPredicate *addressIdPredicate = [NSPredicate predicateWithFormat:@"%K == %@",ADDRESSID,self.addressid];
// below method returns an object as fault by firing a fetch request against context
NSSet *retrievedAddresses = [localDBManager retrieveManagedObjectsForEntity:ADDR_ENTITY withPredicate:addressIdPredicate asFault:YES withPropertyValues:NO error:nil];
self.addresses = retrievedAddresses;
// managing few more relationships
}
}
punto da considerare:
Poiché non vi può essere di più i rapporti di un oggetto, lo so che il consumo di memoria aumenta quando sarò rapporti di mappatura.
Domanda:
voglio tornare indietro un oggetto in colpa, senza perdere alcuna modifica fatti, una volta che i rapporti sono mappati.
Dalla documentazione Apple e alcuni googling sono venuto a sapere che posso utilizzare refreshObject: mergeChanges: metodo. Così sto progettando di aggiungere sotto la linea alla fine del blocco di codice nel metodo manageRelationships:
[[self managedObjectContext] refreshObject:self mergeChanges:YES];
Sono un po 'confuso e voglio sapere che -
Vuol dire che sono state apportate tutte le modifiche al l'oggetto sarà memorizzato nell'archivio permanente e quindi l'oggetto si trasformerà in un errore? Se sì, allora posso considerare equivalente a salvare il metodo di NSManagedObjectContext
Si prega di suggerire.
ottenendo lo stesso problema! hai trovato qualche soluzione per questo scenario? – Bucket