2016-04-25 6 views
0

hier ist das Problem, ich bin Daten aus (JSON) über SwiftyJson Herunterladen, und ich bin es in Anwendungsstart zu tun bedeutet, jeden Start I Anforderung an dem Server sandte und ich es dann in Coredata speichern und will es in einem Array von struct zu holen und sie in Tableview bevölkert, das ist, was ich in der Regel tun will, und ich mag Daten von Coredata laden, wenn ich nicht an den Server conncet kann, weil der Verbindung oder irgendetwas anderes,herunterladen JSON im Hintergrund und Daten in Coredata setzen holen in Tableview in Swift

Hier ist, was ich bisher

class AppDelegate: UIResponder, UIApplicationDelegate { 
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 

json() 

} 

func json { 
deleteData() 

// doing the parse and serialization 
saveJson() 

} 

savejson{ 

// save into coredata ... manageContext and .... 
} 
// and rest of appdelegate 


} 
deleteData{ 

    let fetchRequest = NSFetchRequest(entityName: ",myentityName") 
      fetchRequest.returnsObjectsAsFaults = false 

     do { 

      let results = try manageContext.executeFetchRequest(fetchRequest) 
      for manageObject in results{ 

       let managedObjectData : NSManagedObject = manageObject as! NSManagedObject 

       manageContext.deleteObject(managedObjectData) 
      } 
     }catch let error as NSError { 

      print(" error : \(error) \(error.userInfo) ") 
     } 

    } 


} 

und dann verwende ich die Daten in einem anderen vi getan haben ewController (Tableviewcontroller)

Class table: UITableViewController{ 

    override func viewWillAppear(animated: Bool) { 

fetchCoreDate() //and put it into struct 

} 

//rest of the class table for table populate 

} 

und hier ist die Struktur ich bin die Daten zwischen Viewcontroller

struct logs{ 

var logId: String 
var logName: String 
} 

Das Problem passieren soll ich herunterladen bin alle Daten, wie ich sie in der Konsole zu drucken, ich bin die Daten in der Tabelle zu sehen, aber wenn ich dort die Löschfunktion setze, wird es eveything löschen, ich versuche, die Daten aus der Vergangenheit zu löschen und durch neue zu ersetzen, sondern Json Download ist länger als Anwendung starten, so dass es, nachdem die Tabelle fertig ist das herunterladen geladen und dann die Tabelle lädt nicht die neuen Daten kommen und ich sollte die Löschfunktion auslassen, um die Daten zu sehen, aber es alwa ys der Vergangenheit Daten hinzufügen, und ich sehe, Vervielfältigungen von Datensätzen (wenn die Lösch weglassen)

mit Löschfunktion Ich sehe nichts in der Tabelle ohne es werde ich Duplikat sehen, dass, (bedenken Sie, dass ich herunterladen möchte, dass die Daten und durch neue ersetzen, da es manchmal hinzufügen und manchmal nicht)

traurig es ist ein bisschen lang, aber das Szenario ist irgendwie über zwischen verschiedenen Viewcontroller arbeiten, so sollte ich poste sie haben alle

Antwort

0

ich fand meine Beantworten Sie einige Tage des Ringens mit ihm, die Antwort liegt innerhalb des Ortes, den Sie für die Delete-Methode setzen, sollte es vor task.resue() oder vor async Aufgabe

func json { 

.... 
.... 
deletedata 
asynctask(...) 

// doing the parse and serialization 
saveJson() 

} 

ODER

func json { 

{ 
// doing the parse and serialization 
saveJson() 
deleteData()} 
task.resume() 


} 
Verwandte Themen