Gewusst wie: aktualisieren Sie oder laden Sie app-Daten in swift 2
Ich schrieb und app in swift denen Sie eine view-controller, die ich ändern einige Einstellungen, zum Beispiel : alle view-Controller-Etiketten und Titel ändern.
aber mein problem ist wenn ich die app-Einstellungen, die ich Speichere Sie in core data und ich verwenden Sie die navigation-bar-Taste, um wieder zur übergeordneten Ansicht-controller, wenn ich fetch-core-Daten, die ich bekommen nichts immer noch die gleichen Daten! aber Einstellungen-Ansicht-controller, wenn ich gehen, um es wieder lädt er die richtigen Daten!
Und wenn ich die app schließen und erneut öffnen, die app lädt die richtigen Daten!
Also meine Frage ist wie kann ich neu laden oder starten Sie den ersten view-controller oder ganze app programmgesteuert ?
zum besseren Verständnis meiner Frage unten meine Eltern view-controller, enthält eine Navigationsleiste.
Code :
import UIKit
import AVKit
import AVFoundation
import CoreData
class playVideo: UIViewController {
//data source
var languageDB = [NSManagedObject]()
let managedContext = AppDelegate().managedObjectContext
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.hidesBackButton = true
change_language()
}
override func viewDidLayoutSubviews() {
self.view.setNeedsDisplay()
}
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
change_language()
}
func change_language(){
Insert("فارسی")//insert default language
fetch("Language")
let Language = languageDB[0]
let row_value : String = Language.valueForKey("lang") as! String
if(row_value == "فارسی"){
self.navigationItem.title = "پخش زنده تصاویر از حرم مطهر رضوی"
self.navigationItem.backBarButtonItem?.title = "صفحه اصلی"
}else if(row_value == "English"){
self.navigationItem.title = "Live broadcast from razavi holy shrine"
self.navigationItem.backBarButtonItem?.title = "Main Page"
}else if(row_value == "العربية"){
self.navigationItem.title = "لايف صور من مقام رضوي"
self.navigationItem.backBarButtonItem?.title = "صفحةابتدائي"
}
}
//Insert Function
func Insert(lang : String) {
let check_empty = entityIsEmpty("Language")
if(check_empty != true){
let saveLanguage = NSEntityDescription.insertNewObjectForEntityForName("Language", inManagedObjectContext: managedContext)
//add our data
saveLanguage.setValue(lang, forKey: "lang")
//2
do {
try managedContext.save()
//3
languageDB.append(saveLanguage)
} catch let error as NSError {
print("Could not save \(error), \(error.userInfo)")
}
}//end of check empty if
}
//fetch Functions
func fetch(entity: String){
let langfetch = NSFetchRequest(entityName: entity)
do{
let results = try managedContext.executeFetchRequest(langfetch)
languageDB = results as! [NSManagedObject]
}catch{
fatalError("bad things happend \(error)")
}
}
//check entity is empty Function
func entityIsEmpty(entity: String) -> Bool
{
let request = NSFetchRequest(entityName: entity)
do{
let results = try managedContext.executeFetchRequest(request)
languageDB = results as! [NSManagedObject]
}catch{
fatalError("Cant handel entity \(error)")
}
if languageDB.count != 0
{
return true
}
else
{
return false
}
}
func Refresh() {
//Do some reloading of data and update the table view's data source
//Fetch more objects from a web service, for example...
self.dismissViewControllerAnimated(true, completion: nil)
self.navigationController!.dismissViewControllerAnimated(true, completion: nil)
navigationController!.popViewControllerAnimated(true)
self.navigationItem.hidesBackButton = true
change_language()
}
}
Insert
und Refresh
Funktion Namen! Es macht den code sehr unleserlich.Danke für den Tipp
InformationsquelleAutor anonymox | 2016-02-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen erneuern Sie Ihre app-view-controller statt oder reload oder Relaunch der app
Root_View ist der view-controller, die Sie wollen, es zu erneuern, Sie können die set-id für Ihre view-Controller im identity inspector.
InformationsquelleAutor Mohammad_Hosseini
Zugriff auf Ihre app delegieren, sollten Sie nicht eine neue erstellen mit
AppDelegate()
, aber stattdessen sollten Sie sich eine Referenz auf das aktuelle. Sie können dies tun, mitEdit: gesagt, dass ich wirklich nicht mehr an der Core-Daten für eine Aufgabe wie diese. Sie sind viel besser, mit
NSUserDefaults
.InformationsquelleAutor Tim Vermeulen
Versuchen Sie, diese one
Wenn Ihr erfolgreich eingefügt und das abrufen von Daten aus dem Core data, Sie sollten setzen Sie die Funktion aufrufen
change_language()
in viewWillAppear () - Methode, und entfernen refresh () - MethodeEs kann Ihnen helfen,
InformationsquelleAutor Avinash Jadhav