7

Il mio programma non funziona come link qui sotto:NSFetchedResultsController Osserva tutte le modifiche all'archivio permanente?

Update results of NSFetchedResultsController without a new fetch

  1. risultato spettacolo di NSFetchedResultsController per UITableView
  2. ottenere nuovi oggetti dal servizio web e conservarlo per i dati di base (in stesso controller della vista, con RestKit)
  3. aggiornamento tabella vista con riserva di NSFetchedResultsController delegato

L'attuazione di NSFetchedResultsControllerDelegate viene copiato dal progetto Core Data di Apple e il mio predicare è:

[NSPredicate predicateWithFormat:@"isMyTest == TRUE"] 

Se l'aggiornamento proprietà va da TRUE a FALSE, rimuove le righe dalla Tableview (perché l'oggetto per la riga è in fetchedObjects di NSFetchedResultsController)

Tuttavia, se l'aggiornamento delle proprietà passa da FALSE a TRUE, NSFetchedResultsController non notifica nulla, quindi i nuovi dati non possono essere visualizzati nella visualizzazione tabella. Se aggiorno manualmente ENTRAMBI NSFetchedResulsController e UITableView, vengono visualizzati i nuovi dati.

Ho pensato che NSFetchedResultController osserva tutti i cambiamenti nel negozio persistente, è troppo grande speranza? : D

(. Ho molta voglia di farlo perché altro controller della vista può aggiornare archivio permanente, allora è difficile aggiornare il controller della vista)

Se è così, puoi farmi sapere come posso aggiornare NSFetchedResultsController in modo magnifico?

(aggiornamento)

in riferimento NSfetchedResultsController, ho letto parole indicati

Un controllore quindi effettivamente ha tre modalità di funzionamento, determinata da se ha un delegato e se il file di cache il nome è impostato.

Nessun rilevamento: il delegato è impostato su zero. Il controller semplicemente fornisce l'accesso ai dati com'era quando è stato eseguito il recupero.

Monitoraggio solo memoria: il delegato è diverso da zero e il nome cache file è impostato su zero. Il controllore monitora gli oggetti nel suo set di risultati e nella sezione aggiornamenti e le informazioni di ordinazione in risposta alle modifiche rilevanti .

Tracciamento completo persistente: il delegato e il nome cache del file sono non nullo. Il controllore controlla gli oggetti nella sua serie di risultati e aggiornamenti sezione e le informazioni di ordinazione in risposta alle modifiche rilevanti. Il controller mantiene una cache persistente dei risultati del suo calcolo .

"Il monitoraggio completo persistente" non significa quello che voglio? Ho impostato cacheName, ma funziona lo stesso.

risposta

5

ho pensato NSFetchedResultController orologi tutte le variazioni di persistente negozio, è troppo grande speranza?

Il FRC osserva automaticamente solo gli oggetti restituiti dal suo recupero. Questo normalmente non rappresenta un problema in quanto le modifiche agli oggetti monitorati da un FRC dovrebbero derivare dall'interfaccia utente di tableview o da un contesto di sfondo. Nel primo caso, il FRC viene avvisato del cambiamento e nel secondo, l'unione del contesto in primo piano e dello sfondo farà attivare la FRC per l'aggiornamento.

Sembra che tu abbia valori di modifica del codice ma non stai notificando all'RFC che hai apportato modifiche. (. Se hai un Tableview la visualizzazione di tutti gli oggetti di cui isMyTest == TRUE allora ovviamente non si può accedere agli oggetti dall'interfaccia utente il cui isMyTest == FALSE) In tal caso, è necessario registrare il controller Tableview per:

NSManagedObjectContextObjectsDidChangeNotification 

... notifiche dal contesto in modo da poter comunicare all'RFC di aggiornare le modifiche apportate al di fuori della sua osservazione.

+0

Grazie mille alla risposta e alla modifica della mia domanda, ma ho trovato che CoreData esegue il monitoraggio completo del repository "con test creando un nuovo progetto di test – moon6pence

+0

Sto eseguendo il debug del mio progetto se c'è un mio errore – moon6pence

0

Mi dispiace per il mio errore, ho provato con un nuovo progetto di test.

CoreData esegue il tracciamento completo di tutto lo store persistente.

Ciò significa che se un nuovo oggetto è adatto per il predicato di NSFetchedResultsController, il delegato lo notificherà.

+1

No, il contesto notifica il FRC perché il FRC si è registrato con il contesto per ricevere le notifiche di inserimento, aggiornamento ed eliminazione.Se si apporta una modifica non nota al contesto di FRC, non lo traccia, ad esempio un contesto su un altro thread apporta una modifica che non è unita con il contesto del FRC L'FRC sta rintracciando il contesto NON l'archivio persistente – TechZen

+0

Ah, thx. Significa cambiamenti nello store NON intero persistente, ma in contesto di dati INTERO, ho capito. – moon6pence

+0

Il mio problema era, cambio di oggetto che è non in seguito a FRC, non viene notificato al delegato. – moon6pence