2012-07-01 12 views
5

Attualmente sto cercando attraverso la documentazione e il web, ma io non sto vedendo quello che sto cercando e vorrei solo confermare se quello che sto cercando esiste :-)ios - Core Data aggiornamento dei record

a quanto mi risulta - questa riga di codice mi permette di aggiungere un record al database SQLite che sto mostrando nella mia app attraverso core Data:

NSManagedObject *newSoftware = [NSEntityDescription insertNewObjectForEntityForName: 

Ora c'è una linea simile a quella che mi permette di aggiornare il disco su cui sto lavorando?

qualcosa di simile?

NSManagedObject *newSoftware = [NSEntityDescription updateCurrentObjectForEntityForName: 

La ringrazio molto per il feedback :-)

risposta

8

Qui la mia precedente risposta su di esso. È abbastanza dettagliato per capire cosa sta succedendo.

How to update existing object in Core Data?

Sulla base fumoboy007 commento, è necessario aggiornare l'oggetto attraverso KVC se non è stata impostata una sottoclasse per il vostro oggetto gestito. Se non lo hai già ti consiglio di crearlo. Il codice sembra più pulito in quanto è possibile accedere a un oggetto gestito tramite le proprietà.

Qui un link su di esso:

organising-core-data-for-ios

+0

Grazie per la risposta dettagliata - L'ho fatto funzionare :-) –

+0

Ciao, ho ancora una domanda scusa spero non ti dispiaccia :-) Invece di @ "title ==% @", @ "Some Title" ]; come nel link che mi hai dato io uso @ "nome ==% @", self.appNameTxtFld.text]; Ora il problema è che tutte le mie righe di informazioni nella matrice vengono cambiate non solo quella che seleziono. Come posso essere più specifico nelle mie azioni? –

+0

@JeffKranenburg Spiacente, non riesco a capire, magari aggiungere una modifica alla tua risposta e spiegarla lì. Proverò ad aiutarti. Grazie. –

11

Per aggiornare un record, è sufficiente aggiornare le proprietà s' il NSManagedObject. Se stai usando CoreData, dovresti avere NSManagedObject s per ognuna delle tue "tabelle". Ottieni un riferimento a un oggetto dopo aver interrogato il database (utilizzando NSFetchRequest). Quindi è possibile aggiornare il record in questo modo: myObject.firstName = "John"; Quando si è pronti ad aggiornare l'oggetto nel database Sqlite, è sufficiente chiamare il metodo saveNSManagedContext. Suggerisco di giocare con un'app campione CoreData (come quella predefinita generata da Xcode) per capirlo meglio.

+2

Nota: 'myObject.firstName = @ "John";' funziona solo se si è creato una sottoclasse NSManagedObject. Se non lo facessi, allora dovresti fare '[myObject setValue: @" John "forKey: @" firstName "]'. – fumoboy007

+1

Ho avuto questo set up prima di porre la domanda, ma invece di aggiornare un record lo ha aggiunto come nuovo. –

+0

Ben spiegato, con codice in uscita. – andyPaul