2016-07-04 2 views
0

Я пытаюсь читать и записывать переменную, отображаемую в заметке, и я могу ее прочитать, и она будет отображаться, но когда я попытаюсь сохранить то, что пользователь набрал этой переменной в другом файле, она не будет сохранена. Вот переменные, которые я пытаюсь прочитать и записать в файле проекта.Как изменить значение переменной в другом файле?

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

И вот где я пытаюсь читать и писать.

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! 
    } 

} 

Я знаю, что текстовое поле точек не проблема, потому что они показывают то, что значение первоначально в переменных, я просто не могу сохранить новое значение этих переменных здесь.

+1

Вы пытаясь сохранить то, что пользователь набрал на диск? Возможно, вы захотите проверить 'NSKeyedArchiver' /' NSKeyedUnarchiver'/'NSCoding' и/или' NSUserDefaults'. Вы получаете сообщение об ошибке с кодом? Что это? Поскольку ваш код стоит, вы не _saving_ ничего на диске, вы просто создаете экземпляр 'Project' в памяти и устанавливаете атрибуты на нем. 'project' будет освобожден, как только ваш контроллер просмотра будет выгружен. Если вы хотите использовать 'project' в другом месте, вам нужно взять ссылку на него в другом контроллере или классе. –

+0

Я не получаю никаких ошибок, значение просто не возвращается к переменной в файле проекта. Я думал, что 'project.title = titleTextField' и т. Д. Сохраняет то, что находится в текстовых полях, к этим переменным в файле проекта, как мне это сделать? Я не хочу использовать проект где-нибудь еще, чтобы сохранить эти значения в Project. –

ответ

0

попробовать это для динамичной глобальной переменной

class Project { 
    static let sharedInstance = Project() 

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

Но мне нужно сохранять и извлекать данные, как показано ниже

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

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

также принять к сведению, эта глобальная переменная доступна из любых классов

+0

Немного смущен, что делает эта строка в файле проекта? Должно ли это не идти в другом файле, где я сохраняю? –

+0

это одноэлементный объект, который создается только один раз. поэтому доступна только одна копия объекта. объект singleton может быть разделен и доступен любому другому объекту – xmhafiz