NSUserDefaults не сохраняется в ячейке таблицы - PullRequest
0 голосов
/ 22 февраля 2012

Когда я заменяю @"hello" на строку заголовка таблицы, ячейка отображается пустой. Если я оставляю привет, все работает, в том числе и "строка сведений". Я не знаю, почему он это делает, так как подробная строка настроена точно так же, как строка заголовка. вот код: в файле .m у меня есть

@synthesize  detailsstring;
@synthesize  titlestring;

и все это определено одинаково в .h в .m У меня также есть это:

- (void)viewDidLoad{        
    titlestring =[[NSUserDefaults standardUserDefaults] objectForKey:@"titletext"];
    detailsstring = [[NSUserDefaults standardUserDefaults] objectForKey:@"details"];

    tabledata = [[NSArray alloc] initWithObjects:@"hello", nil];
    tablesubtitles = [[NSArray alloc] initWithObjects:detailsstring, nil];
    [super viewDidLoad];
}

Теперь я сохраняю эти пользовательские ошибки в другом контроллере. Вот действие кнопки сохранения в другом контроллере представления:

- (IBAction)saveButton:(id)sender {
    NSUserDefaults *titletext = [NSUserDefaults standardUserDefaults];
    [titletext setObject:titleTextfield.text forKey:@"titletext"];

    NSUserDefaults *details = [NSUserDefaults standardUserDefaults];
    [details setObject:detailstextfield.text forKey:@"details"];

    NSUserDefaults *categoryUser = [NSUserDefaults standardUserDefaults];
    [categoryUser setInteger:selectedCategory forKey:@"category"];
}

Что я делаю не так?

1 Ответ

3 голосов
/ 22 февраля 2012

Прежде всего, одного экземпляра NSUserDefaults достаточно для всех трех модификаций. Чтобы немедленно «отправить» изменения в файловую систему, вы можете позвонить [userDefaults synchronize];. В противном случае нет гарантии, что ваши изменения будут сохранены мгновенно. Apple предлагает только вызывать этот метод, если вы не можете дождаться сохранения изменений.

- (IBAction)saveButton:(id)sender {
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    [userDefaults setObject:titleTextfield.text forKey:@"titletext"];
    [userDefaults setObject:detailstextfield.text forKey:@"details"];
    [userDefaults setInteger:selectedCategory forKey:@"category"];
    [userDefaults synchronize];
}

В вашем методе viewDidLoad: попробуйте вывести сохраненные значения, чтобы проверить целостность вашего приложения:

NSLog(@"%@", [[NSUserDefaults standardUserDefaults] objectForKey:@"details"]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...