Сохранить (Личное) Настройки приложения на iOS? - PullRequest
27 голосов
/ 08 июля 2011

Мне известно о NSUserDefaults для сохранения / восстановления пользовательских предпочтений. Каков эквивалентный класс для приложения ? Например, приложение может иметь поле «последний запуск»; или оно может иметь поле для уникальной идентификации устройства для использования на уровне приложений.

Мое намерение состоит в том, чтобы сохранить настройки приложения (а не настройки пользователя) из приложения настроек, а не создавать резервные копии этих настроек в iTunes, Time Machine и т. Д.

Я получаю много шума для Java и C #, но не так много для iOS / iPhone / iPad.

Ответы [ 3 ]

71 голосов
/ 08 июля 2011

NSUserDefaults может использоваться для того, что вы просите.

if (![[NSUserDefaults standardUserDefaults] boolForKey:@"shownPrompt"]) {
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"shownPrompt"];
    // Show your prompt or whatever
}

Это рабочий фрагмент кода.Если ключ ложен, он устанавливает его в true и показывает подсказку.При следующем запуске этого кода ключ будет иметь значение true, поэтому приглашение не будет отображаться.

NSUserDefaults относится к текущему приложению на текущем устройстве и аналогично NSMutableDictionary в том смысле, что это система «ключ-значение», с той разницей, что вместо создания своей собственной есть универсальный общий экземпляр для всего вашего приложения, который не стирается при выходе из приложения.

NSUserDefaultsидеально подходит для сохранения таких вещей, как то, было ли что-то показано, дата последнего запуска и т. д. Прочитайте документы здесь: https://developer.apple.com/documentation/foundation/userdefaults

Не откладывайте на части в разделе «Настройки пользователя».Вы можете использовать его, чтобы сохранить все, что вы хотите (до тех пор, пока он есть или может быть преобразован в NSObject, который реализует <NSCoding>, что в основном означает NSString, NSDictionary, NSArray, NSNumber, UITextField, int, float, bool и т.включите в приложении Настройки.Он будет полностью конфиденциальным и скрытым.Чтобы что-то появилось в настройках, вам нужно добавить в приложение пакет настроек и вручную добавить к нему ключи для каждого значения, которое вы хотите видеть в приложении настроек.

11 голосов
/ 08 июля 2011

, если вы можете сохранить значение с помощью NSUserDefaults, то также хорошо хранить настройки приложения.

или добавьте settings.plist в свой проект и прочитайте это (то, что вы не измените позже)

и вы можете использовать как.,

+ (NSDictionary*)getBundlePlist:(NSString *)plistName
{
    NSString *errorDesc = nil;
    NSPropertyListFormat format;
    NSString *plistPath = [[NSBundle mainBundle] pathForResource:plistName ofType:@"plist"];
    NSData *plistXML = [[NSFileManager defaultManager] contentsAtPath:plistPath];
    NSDictionary *temp = (NSDictionary *)[NSPropertyListSerialization
                                          propertyListFromData:plistXML
                                          mutabilityOption:NSPropertyListMutableContainersAndLeaves           
                                          format:&format errorDescription:&errorDesc];
    return temp;
}

+ (id) getPropValue:(NSString *)PropertyName
{   // I am supposing you had add your app preferences on settings.plist.
    return [[Property getBundlePlist:@"settings"] objectForKey:PropertyName];
    //here Property is my class name, then you can use value by 
    //NSString *value = [Property getPropValue:@"setting1"];
}
0 голосов
/ 08 июля 2011

Трудно сказать, что вы спрашиваете.Звучит так, будто NSUserDefaults - это то, что вы ищете, но вы заявляете, что уже знаете об этом.Так в чем твоя проблема?

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