iOS хранит только немного данных - PullRequest
5 голосов
/ 14 сентября 2011

Мне было интересно, есть ли способ хранить небольшие объемы данных, не переходя к полноценному API основных данных.Мне просто нужно где-то хранить 6 «двойных» значений ... Какой лучший способ для этого?

Спасибо, Алекс.

Ответы [ 3 ]

24 голосов
/ 14 сентября 2011

Базовые данные - это всего лишь один из способов хранения данных, и это имеет смысл только тогда, когда вам нужно то, что они делают.Вот пять хороших вариантов хранения ваших данных:

  • Использование NSUserDefaults.(Очень просто.)

  • Сохраните данные в соответствующей структуре (скажем, NSDictionary) и сохраните их в виде списка свойств.(Чертовски просто.)

  • Сохраните данные в классе вашего собственного дизайна, который реализует NSCoding, а затем запишите экземпляр этого класса в файл, используя NSKeyedArchiver.(Хорошо работает для хранения целых графов объектов; это в основном то, что делает IB. Может потребоваться час или два, чтобы свет включился, но как только вы поймете это, это очень хороший способ чтения и записи объектов.)

  • Используйте API файловой системы Cocoa Touch, в частности NSFileHandle и NSFileManager.(Концептуально просто, если вы когда-либо работали с файловой системой раньше. Обеспечивает полный контроль.)

  • Используйте обычный старый API файловой системы POSIX.(Лучше всего подходит для существующего кода Unix или кода, который вы также хотите скомпилировать на других платформах.)

Прежде чем перейти к какому-либо из них, прочитайте Архивы AppleРуководство по программированию сериализаций , Пользовательские настройки по умолчанию Темы программирования и Руководство по программированию файловой системы .

5 голосов
/ 14 сентября 2011

Вы можете использовать NSUserDefaults для этого (http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSUserDefaults_Class/Reference/Reference.html).

-(void)saveToUserDefaults:(NSString*)myString
{
    NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];

    if (standardUserDefaults) {
        [standardUserDefaults setObject:myString forKey:@"Prefs"];
        [standardUserDefaults synchronize];
    }
}

-(NSString*)retrieveFromUserDefaults
{
    NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
    NSString *val = nil;

    if (standardUserDefaults) 
        val = [standardUserDefaults objectForKey:@"Prefs"];

    return val;
}
4 голосов
/ 14 сентября 2011

Самый простой способ хранить небольшие объемы данных без использования некоторых более крупных API - это класс NSUserDefaults . Это действительно легко настроить и использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...