2016-07-04 14 views
0

Ich versuche, eine Variable zu lesen und zu schreiben, um in einer Notiz anzuzeigen, und ich kann es lesen, und es wird angezeigt, aber wenn ich versuche zu speichern, was der Benutzer zu dieser Variable in der anderen Datei eingegeben hat, wird es nicht speichern. Hier sind die Variablen, die ich versuche, in der Projektdatei zu lesen und zu schreiben.Wie ändere ich den Wert einer Variablen in einer anderen Datei?

class Project 
{ 
    var title = "" 
    var content = "" 
    var after = " " 
} 

Und hier ist, wo ich versuche, das Lesen und Schreiben zu tun.

class NoteDetailViewController: UIViewController 
{ 
    @IBOutlet weak var titleTextField: UITextField! 
    @IBOutlet weak var contentTextField: UITextView! 
    @IBOutlet weak var afterTextField: UITextView! 

    var project = Project() 

    override func viewWillAppear(animated: Bool) 
    { 
     super.viewWillAppear(animated) 
     titleTextField.text = project.title 
     contentTextField.text = project.content 
     afterTextField.text = project.after 
    } 

    override func viewWillDisappear(animated: Bool) 
    { 
     super.viewWillDisappear(animated) 

     project.title = titleTextField.text! 
     project.content = contentTextField.text! 
     project.after = afterTextField.text! 
    } 

} 

Ich weiß, dass die Textfeld Stellen sind nicht das Problem, weil sie zeigen, was Wert ist ursprünglich in den Variablen, ich kann nicht einfach einen neuen Wert dieser Variablen von hier speichern.

+1

Sind Sie versucht zu beharren, was der Benutzer auf Festplatte eintippte? Sie können "NSKeyedArchiver"/"NSKeyedUnarchiver"/"NSCoding" und/oder "NSUserDefaults" ausprobieren. Erhalten Sie einen Fehler mit Ihrem Code? Was ist es? Wenn Ihr Code steht, speichern Sie nichts auf der Festplatte, Sie erstellen nur eine Instanz von "Project" im Speicher und setzen Attribute darauf. "Projekt" wird aufgehoben, sobald der View-Controller entladen ist. Wenn Sie "project" woanders verwenden möchten, müssen Sie einen Verweis darauf in einem anderen Ansichtscontroller oder einer anderen Klasse abrufen. –

+0

Ich bekomme keine Fehler, der Wert wird einfach nicht zurück in die Variable in der Projektdatei übersetzt. Ich dachte, das 'project.title = titleTextField' und so weiter speichert, was in den Textfeldern zu diesen Variablen in der Projektdatei ist, wie mache ich das? Ich möchte das Projekt nirgendwo sonst verwenden, nur um diese Werte in Project zu speichern. –

Antwort

0

versuchen, dies für dynamische globale Variable

class Project { 
    static let sharedInstance = Project() 

    var title = "" 
    var content = "" 
    var after = " " 
} 

Aber ich brauche diese globale Variable von allen Klassen zugänglich speichern und Abrufen von Daten, wie unten

// save title 
Project.sharedInstance.title = "My Title" 

// call/print title 
print(Project.sharedInstance.title) 

beachten Sie auch

+0

Ein wenig verwirrt, was macht das Einfügen dieser Zeile in die Projektdatei? Sollte das nicht in die andere Datei gehen, in der ich speichere? –

+0

ist es ein Singleton-Objekt, das genau einmal instanziiert wird. also nur eine Kopie des Objekts verfügbar. Das Singleton-Objekt kann von jedem anderen Objekt gemeinsam genutzt und erreicht werden – xmhafiz

Verwandte Themen