Как бы я сохранил и загрузил UITextField? - PullRequest
0 голосов
/ 03 сентября 2011

Я искал везде и перепробовал много кода, но, похоже, у меня ничего не работает.Все, что мне нужно сделать, это загрузить (в viewDidLoad) текстовое поле и сохранить его при нажатии кнопки.

Что такое самый простой метод для этого?Я работаю с одним окном приложения, у меня нет контроллера представления (это может иметь значение?)

Спасибо,

Джеймс

Ответы [ 3 ]

1 голос
/ 03 сентября 2011

Использование базы данных SQLite:

- (IBAction) checkNotes {

sqlite3_stmt *statement;

const char *dbpath = [databasePath UTF8String];

if (sqlite3_open(dbpath, &contactDB) == SQLITE_OK)
{
    NSString *querySQL = [NSString stringWithFormat: @"SELECT Notes FROM NotesTable WHERE UserID = (\"%@\")", userID.text]; 

    const char *query_stmt = [querySQL UTF8String];

    sqlite3_prepare_v2(contactDB, query_stmt, -1, &statement, NULL);

    if (sqlite3_step(statement) == SQLITE_ROW) {

        NSString *notesField = [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(statement, 0)];

        Notes.text = notesField;

        [notesField release];

    }else{
        Status.text = @"Not found";

    }

    sqlite3_finalize(statement);
}
sqlite3_close(contactDB);    

}

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

1 голос
/ 03 сентября 2011

Создайте NSMutableDictionary как свойство и ...

при нажатии вашей кнопки:

-(IBAction)buttonClicked:(id)sender
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];   
NSString *devicePath = [documentsDirectory stringByAppendingPathComponent:@"yourfile.txt"]; 
[self.dictionary setObject:self.textField.Text key:@"textField"];
[self.dictionary writeToFile:devicePath atomically:YES];
}

В вашем viewDidLoad вы можете получить значение файла следующим образом:

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"youefile"
                                                     ofType:@"txt"];
self.dictioary = [[[NSMutableDictionary alloc] initWithContentsOfFile:filePath] autorelease];
0 голосов
/ 24 марта 2014

Используйте класс NSUserDefaults , который был специально создан для этого сценария.

NSUserDefaults *defs = [NSUserDefaults standardUserDefaults];

// saving a NSString (you usually do this when the value is being submitted)
[defs setObject:textField.text forKey:@"aKey"];
[defs synchronize]; //this commits the new value - shouldn't be necessary because this is doe automatically, but just in case...

// loading a NSString (you usually do this on viewDidLoad)
testField.text = [defs objectForKey:@"aKey"];

Значение хранится в разных сеансах.
Также можно хранить другие типы значений (другиечем NSString).
Используйте разные ключи для каждого поля, для которого вы хотите сохранить значения.
Это также можно использовать для хранения конфигураций приложений / параметров / etc

...