2017-07-27 3 views
0

Wenn i Haupttableview Liste der Elemente von Coredata laden es zeigt perfekt durch:Wert verschwindet aus DATENSATZ nach Haupttableviewcontroller geladen

let fetchRequest:NSFetchRequest<Identity> = Identity.fetchRequest() 
     do 
     { 
      identities = try DatabaseController.getContext().fetch(fetchRequest) 
      print("number of results: \(identities.count)") 
      for identity in identities as [Identity] 
      { 
       print("\(identity.pName!) is \(identity.accuracy)% Robesper. Updeted \(identity.lastModified!).") 
      } 
     } 
     catch 
     { 
      print("Error fetchRequest in ViewWillApper: \(error)") 
     } 

Löschen funktioniert auch gut, so habe ich ein neues Navigation und eine Ansicht zum Hinzufügen ein neues Objekt.

Um die Liste zu überprüfen und herauszufinden, was das Problem (offensichtlich) ist, gebe ich list.count aus. Denn wenn ich das Haupt-TableView mit Liste lade, erscheint neues ITEM grundsätzlich nicht. Wenn ich jedoch den SIMULATOR neu starte, werden alle Elemente angezeigt.

So 1. Neues Objekt erstellt.

  1. Dies wurde in CoreData eingefügt. enter image description here
  2. Überprüft. Es ist dort! Sie können sehen, ...
> number of results: 3 Hello World is 99% Robesper. Updeted 2017-07-08 
> 17:50:30 +0000. Sex is 99% Robesper. Updeted 2017-07-27 17:56:12 
> +0000. test is 99% Robesper. Updeted 2017-07-27 18:03:28 +0000. 
  1. Now -> zu Tableview Go -> überprüfte ich die Liste am viewDidLoad und viewWillAppear.

  2. Es ist "0". Großartig, denn es ist nicht unordentlich und wir können es jetzt aus der CoreData-Liste im TableViewController überprüfen.

    number of results viewDidLoad: 0 
    viewWillAppear: 0 
    number of results: 2 
    Sex is 99% Robesper. Updeted 2017-07-27 17:56:12 +0000. 
    Hello World is 99% Robesper. Updeted 2017-07-08 17:50:30 +0000. 
    after fetch: 2 
    
  3. hergeholt. Aber 1 NEUER Wert fehlt jetzt !? Was??? enter image description here

  4. Starten Sie den SIMULATOR neu. Es ZEIGT mir jetzt 3 Gegenstände. Aber wenn ich die Hinzufügung von Gegenständen wiederhole, passiert es wieder. enter image description here

MAYBE, wegen der Beendigung des Programms gespeichert wir es von AppDelegate?

func applicationWillTerminate(_ application: UIApplication) 
{ 
    DatabaseController.saveContext() 
} 

Ich klebte das Speichern .saveContext() auf ViewWillAppear, hat nicht funktioniert. WHAAAAT? Was mache ich falsch Leute? BITTE! SPEICHERN SIE MICH: D

+1

Sie auch den Artikel in den Haupt Warteschlange –

+0

und laden Sie die Tabelle in Hauptwarteschlange –

+0

Bitte überprüfen Sie meine Antwort . –

Antwort

0

holen Prozess/Variablen Einstellung ... dann ...

Ich dachte, ich temporäre Variablen zum Speichern von Daten reinigen sollte.Also habe ich DatabaseController.getContext().delete(identity) verwendet, um es sauber zu halten. Dies ist jedoch in SWIFT nicht erforderlich, da diese MANAGER es für Sie erledigen können. Alles, was Sie brauchen - SAVE'n'GO die Tabelle/Datenliste neu zu laden einfach kommentieren diese alle Probleme gelöst)

//DatabaseController.getContext().delete(identity) 
DatabaseController.saveContext() 
0
  1. Sie sollten den Kontext speichern, wenn Sie fertig sind, den Artikel einzufügen.

  2. Die Ansichten werden nicht aktualisiert. Sie müssen reloadData erneut in Ihrer Tabellenansicht abrufen und abrufen. Oder eine NSFetchedResultsController verwendet eine Tabelle haben, um eine Abfrage Coredata angeschlossen werden: https://developer.apple.com/documentation/coredata/nsfetchedresultscontroller

+0

Bereits erledigt ... Nachdem alle Felder ausgefüllt wurden: DatabaseController.saveContext() Auch gelöschte Artikelinformationen aus dem Speicher: DatabaseController.getContext(). Delete (Identität) tableView.reloadData() auch im – Oleksandr

1

Sie sollten die Tabelle neu zu laden, wenn Ansicht in Hauptwarteschlange angezeigt, nachdem das Ergebnis von Kerndaten abgerufen werden.

DispatchQueue.main.async { 
tableView.reloadData() 
} 
+0

sollte ViewDidAppear versucht:., hilft nicht jedoch self.tableView.reloadData() = ( – Oleksandr

+0

versuchen, Daten in DB in Haupt Warteschlange einfügen ich habe auch vor der gleichen Frage @OleksandrZheliezniak –

Verwandte Themen